0 txs
0 calls
constructor
constructor(string _name, string _symbol, string _contractURI, address _backendSigner, address[] _whitelistedContracts, address _owner, address _royaltyReceiver, uint96 _royaltyBasisPoints)
functions
backendSigner
viewfunction backendSigner() view returns (address)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
contractURI
viewfunction contractURI() view returns (string)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isContractWhitelisted
viewfunction isContractWhitelisted(address _contractAddress) view returns (bool)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
royaltyBasisPoints
viewfunction royaltyBasisPoints() view returns (uint96)
royaltyInfo
viewfunction royaltyInfo(uint256 _tokenId, uint256 _salePrice) view returns (address receiver, uint256 royaltyAmount)
royaltyReceiver
viewfunction royaltyReceiver() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256 result)
transferLocked
viewfunction transferLocked() view returns (bool)
addWhitelistedContract
nonpayablefunction addWhitelistedContract(address _contractAddress)
approve
payablefunction approve(address _to, uint256 _tokenId) payable
mint
nonpayablefunction mint(address _to, uint256 _quantity, string[] _metadata)
mintWithSameMetadata
nonpayablefunction mintWithSameMetadata(address _to, uint256 _quantity, string _metadata)
removeWhitelistedContract
nonpayablefunction removeWhitelistedContract(address _contractAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId) payable
setApprovalForAll
nonpayablefunction setApprovalForAll(address _operator, bool _approved)
setBackendSigner
nonpayablefunction setBackendSigner(address _newSigner)
setContractURI
nonpayablefunction setContractURI(string _contractURI)
setRoyaltyInfo
nonpayablefunction setRoyaltyInfo(address _royaltyReceiver, uint96 _royaltyBasisPoints)
transferFrom
payablefunction transferFrom(address from, address to, uint256 tokenId) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unlockTransfers
nonpayablefunction unlockTransfers()
updateMetadata
nonpayablefunction updateMetadata(uint256 _tokenId, string _newMetadata, uint256 _timestamp, bytes _signature)
updateMetadataBatch
nonpayablefunction updateMetadataBatch(uint256[] _tokenIds, string[] _newMetadatas, uint256 _timestamp, bytes[] _signatures)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BackendSignerChanged
event BackendSignerChanged(address newBackendSigner)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 indexed fromTokenId, uint256 indexed toTokenId)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
ContractRemovedFromWhitelist
event ContractRemovedFromWhitelist(address contractAddress)
ContractURIUpdated
event ContractURIUpdated()
ContractWhitelisted
event ContractWhitelisted(address contractAddress)
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RoyaltyInfoUpdated
event RoyaltyInfoUpdated(address indexed receiver, uint96 royaltyBasisPoints)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TransfersUnlocked
event TransfersUnlocked()
errors
AlreadyWhitelisted
error AlreadyWhitelisted()
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
DuplicateTokenUpdate
error DuplicateTokenUpdate()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
InvalidAddress
error InvalidAddress()
InvalidETHAmount
error InvalidETHAmount()
InvalidMessageHash
error InvalidMessageHash()
InvalidMetadataCount
error InvalidMetadataCount()
InvalidParameters
error InvalidParameters()
InvalidRoyaltyBasisPoints
error InvalidRoyaltyBasisPoints()
InvalidSigner
error InvalidSigner()
InvalidTokenId
error InvalidTokenId()
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
NotCompatibleWithSpotMints
error NotCompatibleWithSpotMints()
NotWhitelisted
error NotWhitelisted()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
SequentialMintExceedsLimit
error SequentialMintExceedsLimit()
SequentialUpToTooSmall
error SequentialUpToTooSmall()
SpotMintTokenIdTooSmall
error SpotMintTokenIdTooSmall()
TokenAlreadyExists
error TokenAlreadyExists()
TokenIdsNotStrictlyAscending
error TokenIdsNotStrictlyAscending()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransfersAreLocked
error TransfersAreLocked()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
creation bytecode
0x60806040523461003957610023610014610311565b96959095949194939293610804565b61002b61003e565b61404e610c00823961404e90f35b610044565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061007090610048565b810190811060018060401b0382111761008857604052565b610052565b906100a061009961003e565b9283610066565b565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b60018060401b0381116100ce576100ca602091610048565b0190565b610052565b90825f9392825e0152565b909291926100f36100ee826100b2565b61008d565b9381855260208501908284011161010f5761010d926100d3565b565b6100ae565b9080601f830112156101325781602061012f935191016100de565b90565b6100aa565b60018060a01b031690565b61014b90610137565b90565b61015781610142565b0361015e57565b5f80fd5b9050519061016f8261014e565b565b60018060401b0381116101875760208091020190565b610052565b5f80fd5b909291926101a56101a082610171565b61008d565b93818552602080860192028301928184116101e257915b8383106101c95750505050565b602080916101d78486610162565b8152019201916101bc565b61018c565b9080601f830112156102055781602061020293519101610190565b90565b6100aa565b60018060601b031690565b61021e8161020a565b0361022557565b5f80fd5b9050519061023682610215565b565b91906101008382031261030c575f83015160018060401b0381116103075781610262918501610114565b92602081015160018060401b0381116103025782610281918301610114565b92604082015160018060401b0381116102fd57836102a0918401610114565b926102ae8160608501610162565b92608081015160018060401b0381116102f857826102cd9183016101e7565b926102f56102de8460a08501610162565b936102ec8160c08601610162565b9360e001610229565b90565b6100a6565b6100a6565b6100a6565b6100a6565b6100a2565b61032f614c4e803803806103248161008d565b928339810190610238565b9091929394959697565b60a01b90565b9061034e60ff60a01b91610339565b9181191691161790565b151590565b61036690610358565b90565b90565b9061038161037c6103889261035d565b610369565b825461033f565b9055565b90565b90565b6103a66103a16103ab9261038c565b61038f565b610137565b90565b6103b790610392565b90565b5f0190565b90565b6103d66103d16103db926103bf565b61038f565b61020a565b90565b5190565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610416575b602083101461041157565b6103e2565b91607f1691610406565b5f5260205f2090565b601f602091010490565b1b90565b9190600861045291029161044c5f1984610433565b92610433565b9181191691161790565b90565b61047361046e6104789261045c565b61038f565b61045c565b90565b90565b919061049461048f61049c9361045f565b61047b565b908354610437565b9055565b5f90565b6104b6916104b06104a0565b9161047e565b565b5b8181106104c4575050565b806104d15f6001936104a4565b016104b9565b9190601f81116104e7575b505050565b6104f361051893610420565b9060206104ff84610429565b83019310610520575b61051190610429565b01906104b8565b5f80806104e2565b915061051181929050610508565b1c90565b90610542905f199060080261052e565b191690565b8161055191610532565b906002021790565b90610563816103de565b9060018060401b038211610621576105858261057f85546103f6565b856104d7565b602090601f83116001146105b9579180916105a8935f926105ad575b5050610547565b90555b565b90915001515f806105a1565b601f198316916105c885610420565b925f5b818110610609575091600293918560019694106105ef575b505050020190556105ab565b6105ff910151601f841690610532565b90555f80806105e3565b919360206001819287870151815501950192016105cb565b610052565b9061063091610559565b565b5f1b90565b9061064860018060a01b0391610632565b9181191691161790565b61066661066161066b92610137565b61038f565b610137565b90565b61067790610652565b90565b6106839061066e565b90565b90565b9061069e6106996106a59261067a565b610686565b8254610637565b9055565b5190565b6106c16106bc6106c69261038c565b61038f565b61045c565b90565b60016106d5910161045c565b90565b634e487b7160e01b5f52603260045260245ffd5b906106f6826106a9565b811015610707576020809102010190565b6106d8565b6107169051610142565b90565b906107239061067a565b5f5260205260405f2090565b9061073b60ff91610632565b9181191691161790565b9061075a6107556107619261035d565b610369565b825461072f565b9055565b61076e90610142565b9052565b9190610785905f60208501940190610765565b565b9061079960018060a01b031991610339565b9181191691161790565b6107b76107b26107bc9261020a565b61038f565b61020a565b90565b90565b906107d76107d26107de926107a3565b6107bf565b8254610787565b9055565b6107eb9061020a565b9052565b9190610802905f602085019401906107e2565b565b90610816929498969795919091610a2f565b6108226001600a61036c565b8061083d6108376108325f6103ae565b610142565b91610142565b148015610a0d575b6109f1578261085e6108586127106103c2565b9161020a565b116109d55761087161087892600d610626565b600a610689565b610881846106a9565b9261088b5f6106ad565b5b8061089f6108998761045c565b9161045c565b1015610975576108b86108b38783906106ec565b61070c565b6108d26108cc6108c75f6103ae565b610142565b91610142565b14610959576109549061090360016108fe600e6108f86108f38c87906106ec565b61070c565b90610719565b610745565b6109166109118883906106ec565b61070c565b61094c7fb7269578552456138d47dc37471d94886205143f138387446eff0148047965f69161094361003e565b91829182610772565b0390a16106c9565b61088c565b5f63e6c4247b60e01b815280610971600482016103ba565b0390fd5b50919350915061098681600f610689565b61099182600f6107c2565b6109d06109be7fae1d656a1268648b04ffa79c1416f05879338ae295aae3234d8db217356a1c629261067a565b926109c761003e565b918291826107ef565b0390a2565b5f63e3f3b65560e01b8152806109ed600482016103ba565b0390fd5b5f63e6c4247b60e01b815280610a09600482016103ba565b0390fd5b5084610a29610a23610a1e5f6103ae565b610142565b91610142565b14610845565b90610a3a9291610a3c565b565b90610a479291610a49565b565b91610a5391610aa5565b80610a6e610a68610a635f6103ae565b610142565b91610142565b14610a7e57610a7c90610b74565b565b610aa1610a8a5f6103ae565b5f918291631e4fbdf760e01b835260048301610772565b0390fd5b90610aaf91610ae7565b565b90610abd5f1991610632565b9181191691161790565b90610adc610ad7610ae39261045f565b61047b565b8254610ab1565b9055565b90610af6610afd926002610626565b6003610626565b610b0e610b08610bd5565b5f610ac7565b610b16610bea565b610b2f610b29610b24610bd5565b61045c565b9161045c565b10610b3657565b63fed8210f60e01b610bf8565b5f1c90565b60018060a01b031690565b610b5f610b6491610b43565b610b48565b90565b610b719054610b53565b90565b610b7e6009610b67565b610b89826009610689565b90610bbd610bb77f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361067a565b9161067a565b91610bc661003e565b80610bd0816103ba565b0390a3565b610bdd6104a0565b50610be75f6106ad565b90565b610bf26104a0565b505f1990565b5f5260045ffdfe60806040526004361015610013575b61131e565b61001d5f3561023c565b806301ffc9a71461023757806302fa7c471461023257806306fdde031461022d578063081812fc14610228578063095ea7b3146102235780630ff24ee21461021e57806312686aae1461021957806318160ddd1461021457806321842be31461020f57806322df11d81461020a57806323b872dd146102055780632a55205a1461020057806336f95670146101fb57806342260b5d146101f657806342842e0e146101f157806346704adb146101ec5780636352211e146101e757806365d65e86146101e257806370a08231146101dd578063715018a6146101d857806377182cf0146101d35780638da5cb5b146101ce578063938e3d7b146101c957806395d89b41146101c45780639fbc8713146101bf578063a22cb465146101ba578063b88d4fde146101b5578063c057058a146101b0578063c87b56dd146101ab578063e8a3d485146101a6578063e985e9c5146101a1578063f163cc261461019c578063f2fde38b146101975763f5972ddd0361000e576112ea565b611266565b61122f565b611023565b610fc1565b610f8c565b610f57565b610f2a565b610e97565b610e12565b610dce565b610d9b565b610d31565b610cfa565b610bd4565b610b9f565b610b6a565b610af5565b610ac2565b610a98565b610a63565b6109c7565b610990565b610916565b6108a8565b61068f565b61065a565b610603565b610590565b610548565b6104e6565b61044b565b61039d565b6102c8565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b61026981610254565b0361027057565b5f80fd5b9050359061028182610260565b565b9060208282031261029c57610299915f01610274565b90565b61024c565b151590565b6102af906102a1565b9052565b91906102c6905f602085019401906102a6565b565b346102f8576102f46102e36102de366004610283565b61134b565b6102eb610242565b918291826102b3565b0390f35b610248565b60018060a01b031690565b610311906102fd565b90565b61031d81610308565b0361032457565b5f80fd5b9050359061033582610314565b565b6bffffffffffffffffffffffff1690565b61035181610337565b0361035857565b5f80fd5b9050359061036982610348565b565b91906040838203126103935780610387610390925f8601610328565b9360200161035c565b90565b61024c565b5f0190565b346103cc576103b66103b036600461036b565b906115bd565b6103be610242565b806103c881610398565b0390f35b610248565b5f9103126103db57565b61024c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b61042161042a60209361042f93610418816103e0565b938480936103e4565b958691016103ed565b6103f8565b0190565b6104489160208201915f818403910152610402565b90565b3461047b5761045b3660046103d1565b6104776104666116e5565b61046e610242565b91829182610433565b0390f35b610248565b90565b61048c81610480565b0361049357565b5f80fd5b905035906104a482610483565b565b906020828203126104bf576104bc915f01610497565b90565b61024c565b6104cd90610308565b9052565b91906104e4905f602085019401906104c4565b565b34610516576105126105016104fc3660046104a6565b611757565b610509610242565b918291826104d1565b0390f35b610248565b91906040838203126105435780610537610540925f8601610328565b93602001610497565b90565b61024c565b61055c61055636600461051b565b906117de565b610564610242565b8061056e81610398565b0390f35b9060208282031261058b57610588915f01610328565b90565b61024c565b346105be576105a86105a3366004610572565b61198d565b6105b0610242565b806105ba81610398565b0390f35b610248565b1c90565b60ff1690565b6105dd9060086105e293026105c3565b6105c7565b90565b906105f091546105cd565b90565b610600600a6014906105e5565b90565b34610633576106133660046103d1565b61062f61061e6105f3565b610626610242565b918291826102b3565b0390f35b610248565b61064190610480565b9052565b9190610658905f60208501940190610638565b565b3461068a5761066a3660046103d1565b6106866106756119dc565b61067d610242565b91829182610645565b0390f35b610248565b346106bd5761069f3660046103d1565b6106a7611adf565b6106af610242565b806106b981610398565b0390f35b610248565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b906106e4906103f8565b810190811067ffffffffffffffff8211176106fe57604052565b6106c6565b9061071661070f610242565b92836106da565b565b67ffffffffffffffff81116107305760208091020190565b6106c6565b5f80fd5b5f80fd5b67ffffffffffffffff811161075b576107576020916103f8565b0190565b6106c6565b90825f939282370152565b9092919261078061077b8261073d565b610703565b9381855260208501908284011161079c5761079a92610760565b565b610739565b9080601f830112156107bf578160206107bc9335910161076b565b90565b6106c2565b9291906107d86107d382610718565b610703565b938185526020808601920281019183831161082f5781905b8382106107fe575050505050565b813567ffffffffffffffff811161082a5760209161081f87849387016107a1565b8152019101906107f0565b6106c2565b610735565b9080601f830112156108525781602061084f933591016107c4565b90565b6106c2565b916060838303126108a35761086e825f8501610328565b9261087c8360208301610497565b92604082013567ffffffffffffffff811161089e5761089b9201610834565b90565b610250565b61024c565b346108d7576108c16108bb366004610857565b91611d5f565b6108c9610242565b806108d381610398565b0390f35b610248565b90916060828403126109115761090e6108f7845f8501610328565b936109058160208601610328565b93604001610497565b90565b61024c565b61092a6109243660046108dc565b91611f98565b610932610242565b8061093c81610398565b0390f35b9190604083820312610968578061095c610965925f8601610497565b93602001610497565b90565b61024c565b91602061098e92949361098760408201965f8301906104c4565b0190610638565b565b346109c2576109a96109a3366004610940565b906122fd565b906109be6109b5610242565b9283928361096d565b0390f35b610248565b346109f5576109df6109da366004610572565b61245b565b6109e7610242565b806109f181610398565b0390f35b610248565b6bffffffffffffffffffffffff1690565b610a1b906008610a2093026105c3565b6109fa565b90565b90610a2e9154610a0b565b90565b610a3e600f601490610a23565b90565b610a4a90610337565b9052565b9190610a61905f60208501940190610a41565b565b34610a9357610a733660046103d1565b610a8f610a7e610a31565b610a86610242565b91829182610a4e565b0390f35b610248565b610aac610aa63660046108dc565b91612494565b610ab4610242565b80610abe81610398565b0390f35b34610af057610ada610ad5366004610572565b612578565b610ae2610242565b80610aec81610398565b0390f35b610248565b34610b2557610b21610b10610b0b3660046104a6565b612583565b610b18610242565b918291826104d1565b0390f35b610248565b60018060a01b031690565b610b45906008610b4a93026105c3565b610b2a565b90565b90610b589154610b35565b90565b610b67600a5f90610b4d565b90565b34610b9a57610b7a3660046103d1565b610b96610b85610b5b565b610b8d610242565b918291826104d1565b0390f35b610248565b34610bcf57610bcb610bba610bb5366004610572565b6125db565b610bc2610242565b91829182610645565b0390f35b610248565b34610c0257610be43660046103d1565b610bec612655565b610bf4610242565b80610bfe81610398565b0390f35b610248565b67ffffffffffffffff8111610c2557610c216020916103f8565b0190565b6106c6565b90929192610c3f610c3a82610c07565b610703565b93818552602085019082840111610c5b57610c5992610760565b565b610739565b9080601f83011215610c7e57816020610c7b93359101610c2a565b90565b6106c2565b90608082820312610cf557610c9a815f8401610497565b92602083013567ffffffffffffffff8111610cf05782610cbb9185016107a1565b92610cc98360408301610497565b92606082013567ffffffffffffffff8111610ceb57610ce89201610c60565b90565b610250565b610250565b61024c565b34610d2c57610d16610d0d366004610c83565b92919091612718565b610d1e610242565b80610d2881610398565b0390f35b610248565b34610d6157610d413660046103d1565b610d5d610d4c6127e8565b610d54610242565b918291826104d1565b0390f35b610248565b90602082820312610d96575f82013567ffffffffffffffff8111610d9157610d8e92016107a1565b90565b610250565b61024c565b34610dc957610db3610dae366004610d66565b612854565b610dbb610242565b80610dc581610398565b0390f35b610248565b34610dfe57610dde3660046103d1565b610dfa610de961285f565b610df1610242565b91829182610433565b0390f35b610248565b610e0f600f5f90610b4d565b90565b34610e4257610e223660046103d1565b610e3e610e2d610e03565b610e35610242565b918291826104d1565b0390f35b610248565b610e50816102a1565b03610e5757565b5f80fd5b90503590610e6882610e47565b565b9190604083820312610e925780610e86610e8f925f8601610328565b93602001610e5b565b90565b61024c565b34610ec657610eb0610eaa366004610e6a565b90612875565b610eb8610242565b80610ec281610398565b0390f35b610248565b90608082820312610f2557610ee2815f8401610328565b92610ef08260208501610328565b92610efe8360408301610497565b92606082013567ffffffffffffffff8111610f2057610f1d9201610c60565b90565b610250565b61024c565b610f41610f38366004610ecb565b929190916128ab565b610f49610242565b80610f5381610398565b0390f35b34610f8757610f83610f72610f6d366004610572565b61290a565b610f7a610242565b918291826102b3565b0390f35b610248565b34610fbc57610fb8610fa7610fa23660046104a6565b612929565b610faf610242565b91829182610433565b0390f35b610248565b34610ff157610fd13660046103d1565b610fed610fdc61297a565b610fe4610242565b91829182610433565b0390f35b610248565b919060408382031261101e578061101261101b925f8601610328565b93602001610328565b90565b61024c565b346110545761105061103f611039366004610ff6565b906129a6565b611047610242565b918291826102b3565b0390f35b610248565b67ffffffffffffffff81116110715760208091020190565b6106c6565b9092919261108b61108682611059565b610703565b93818552602080860192028301928184116110c857915b8383106110af5750505050565b602080916110bd8486610497565b8152019201916110a2565b610735565b9080601f830112156110eb578160206110e893359101611076565b90565b6106c2565b67ffffffffffffffff81116111085760208091020190565b6106c6565b92919061112161111c826110f0565b610703565b93818552602080860192028101918383116111785781905b838210611147575050505050565b813567ffffffffffffffff8111611173576020916111688784938701610c60565b815201910190611139565b6106c2565b610735565b9080601f8301121561119b578160206111989335910161110d565b90565b6106c2565b9060808282031261122a575f82013567ffffffffffffffff811161122557816111ca9184016110cd565b92602083013567ffffffffffffffff811161122057826111eb918501610834565b926111f98360408301610497565b92606082013567ffffffffffffffff811161121b57611218920161117d565b90565b610250565b610250565b610250565b61024c565b346112615761124b6112423660046111a0565b92919091612a23565b611253610242565b8061125d81610398565b0390f35b610248565b346112945761127e611279366004610572565b612d47565b611286610242565b8061129081610398565b0390f35b610248565b916060838303126112e5576112b0825f8501610328565b926112be8360208301610497565b92604082013567ffffffffffffffff81116112e0576112dd92016107a1565b90565b610250565b61024c565b34611319576113036112fd366004611299565b91612d52565b61130b610242565b8061131581610398565b0390f35b610248565b5f80fd5b5f90565b90565b60e01b90565b61134361133e61134892611326565b611329565b610254565b90565b611353611322565b508061136b611365634906490661132f565b91610254565b14801561138f575b90811561137f575b5090565b6113899150612e5a565b5f61137b565b50806113aa6113a463152a902d60e11b610254565b91610254565b14611373565b906113c2916113bd612ecb565b6114f1565b565b90565b90565b6113de6113d96113e3926113c4565b6113c7565b6102fd565b90565b6113ef906113ca565b90565b90565b61140961140461140e926113f2565b6113c7565b610337565b90565b5f1b90565b9061142760018060a01b0391611411565b9181191691161790565b61144561144061144a926102fd565b6113c7565b6102fd565b90565b61145690611431565b90565b6114629061144d565b90565b90565b9061147d61147861148492611459565b611465565b8254611416565b9055565b60a01b90565b906114a86bffffffffffffffffffffffff60a01b91611488565b9181191691161790565b6114c66114c16114cb92610337565b6113c7565b610337565b90565b90565b906114e66114e16114ed926114b2565b6114ce565b825461148e565b9055565b8061150c6115066115015f6113e6565b610308565b91610308565b146115a157816115266115206127106113f5565b91610337565b116115855761153681600f611468565b61154182600f6114d1565b61158061156e7fae1d656a1268648b04ffa79c1416f05879338ae295aae3234d8db217356a1c6292611459565b92611577610242565b91829182610a4e565b0390a2565b5f63e3f3b65560e01b81528061159d60048201610398565b0390fd5b5f63e6c4247b60e01b8152806115b960048201610398565b0390fd5b906115c7916113b0565b565b606090565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015611602575b60208310146115fd57565b6115ce565b91607f16916115f2565b60209181520190565b5f5260205f2090565b905f9291805490611638611631836115e2565b809461160c565b916001811690815f1461168f5750600114611653575b505050565b6116609192939450611615565b915f925b81841061167757505001905f808061164e565b60018160209295939554848601520191019290611664565b92949550505060ff19168252151560200201905f808061164e565b906116b49161161e565b90565b906116d76116d0926116c7610242565b938480926116aa565b03836106da565b565b6116e2906116b7565b90565b6116ed6115c9565b506116f860026116d9565b90565b5f90565b61171361170e61171892610480565b6113c7565b610480565b90565b90611725906116ff565b5f5260205260405f2090565b5f1c90565b61174261174791611731565b610b2a565b90565b6117549054611736565b90565b61175f6116fb565b5061177261176c82612f64565b156102a1565b61178e575f61178561178b92600661171b565b0161174a565b90565b6333d1c03960e21b613075565b6117af6117aa6117b4926113c4565b6113c7565b610480565b90565b60a01c90565b6117c96117ce916117b7565b6105c7565b90565b6117db90546117bd565b90565b90346117f26117ec5f61179b565b91610480565b0361182c57611801600a6117d1565b6118105761180e9161307c565b565b5f6321a5eee560e11b81528061182860048201610398565b0390fd5b5f63090ac0d760e21b81528061184460048201610398565b0390fd5b61185990611854612ecb565b611900565b565b9061186590611459565b5f5260205260405f2090565b61187d61188291611731565b6105c7565b90565b61188f9054611871565b90565b1b90565b919060086118b19102916118ab60ff84611892565b92611892565b9181191691161790565b6118c4906102a1565b90565b90565b91906118e06118db6118e8936118bb565b6118c7565b908354611896565b9055565b6118fe916118f8611322565b916118ca565b565b61191d611917611912600e849061185b565b611885565b156102a1565b611971576119365f611931600e849061185b565b6118ec565b61196c7ffb8b462bd4e3db069eb434596fcfb88044cfe688f7329d1c4bdfbb113257b1ac91611963610242565b918291826104d1565b0390a1565b5f630b094f2760e31b81528061198960048201610398565b0390fd5b61199690611848565b565b5f90565b90565b6119ab6119b091611731565b61199c565b90565b6119bd905461199f565b90565b906119cb9103610480565b90565b906119d99101610480565b90565b6119e4611998565b50611a12611a046119f45f6119b3565b6119fe60016119b3565b906119c0565b611a0c61308c565b906119c0565b90611a1b6130a1565b611a2e611a285f19610480565b91610480565b03611a36575b565b90611a4b90611a4560086119b3565b906119ce565b90611a34565b611a59612ecb565b611a61611a9c565b565b90611a7260ff60a01b91611488565b9181191691161790565b90611a91611a8c611a98926118bb565b6118c7565b8254611a63565b9055565b611aa75f600a611a7c565b7f1d8b2f61c84f331c359476b447a0ddc4fd75f10d265a30e609526e440cdc3a47611ad0610242565b80611ada81610398565b0390a1565b611ae7611a51565b565b5190565b6001611af99101610480565b90565b634e487b7160e01b5f52603260045260245ffd5b90611b1a82611ae9565b811015611b2b576020809102010190565b611afc565b634e487b7160e01b5f52601160045260245ffd5b611b53611b5991939293610480565b92610480565b8201809211611b6457565b611b30565b90611b73906116ff565b5f5260205260405f2090565b601f602091010490565b91906008611ba4910291611b9e5f1984611892565b92611892565b9181191691161790565b90565b9190611bc7611bc2611bcf936116ff565b611bae565b908354611b89565b9055565b611be591611bdf611998565b91611bb1565b565b5b818110611bf3575050565b80611c005f600193611bd3565b01611be8565b9190601f8111611c16575b505050565b611c22611c4793611615565b906020611c2e84611b7f565b83019310611c4f575b611c4090611b7f565b0190611be7565b5f8080611c11565b9150611c4081929050611c37565b90611c6d905f19906008026105c3565b191690565b81611c7c91611c5d565b906002021790565b90611c8e816103e0565b9067ffffffffffffffff8211611d4e57611cb282611cac85546115e2565b85611c06565b602090601f8311600114611ce657918091611cd5935f92611cda575b5050611c72565b90555b565b90915001515f80611cce565b601f19831691611cf585611615565b925f5b818110611d3657509160029391856001969410611d1c575b50505002019055611cd8565b611d2c910151601f841690611c5d565b90555f8080611d10565b91936020600181928787015181550195019201611cf8565b6106c6565b90611d5d91611c84565b565b92919091611d80611d7a611d75600e339061185b565b611885565b156102a1565b611e7957611d8d82611ae9565b611d9f611d9985610480565b91610480565b03611e5d57611db7611daf6130af565b9484906130c4565b611dc05f61179b565b5b80611dd4611dce86610480565b91610480565b1015611e5657611e5190611e08611dec858390611b10565b51611e03600c611dfd8a8690611b44565b90611b69565b611d53565b611e13868290611b44565b611e497ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce791611e40610242565b91829182610645565b0390a1611aed565b611dc1565b5092505050565b5f634bd3aefd60e01b815280611e7560048201610398565b0390fd5b5f630b094f2760e31b815280611e9160048201610398565b0390fd5b611e9e90611431565b90565b611eb5611eb0611eba926102fd565b6113c7565b610480565b90565b611ed1611ecc611ed692610480565b6113c7565b6102fd565b90565b90565b611ef0611eeb611ef592611ed9565b6113c7565b610480565b90565b90611f0290611459565b5f5260205260405f2090565b6001611f1a9103610480565b90565b90611f295f1991611411565b9181191691161790565b90611f48611f43611f4f926116ff565b611bae565b8254611f1d565b9055565b90565b611f6a611f65611f6f92611f53565b6113c7565b610480565b90565b611f7f600160e11b611f56565b90565b90611f8c906116ff565b5f5260205260405f2090565b9190611fa3826130da565b611fb4611faf85611e95565b611ea1565b93611fbe82611ebd565b611fd0611fca87610480565b91611ea1565b0361221157611fde8461326e565b61200a6120048289611ffe611ff9611ff4613299565b611e95565b611ea1565b916132a6565b156102a1565b6121d8575b6120a6836120e795936120b7936120376120ec9997888c906120316001611edc565b926132b7565b6121cf575b5061206361204c60058390611ef8565b61205d612058826119b3565b611f0e565b90611f33565b61208961207260058790611ef8565b61208361207e826119b3565b611aed565b90611f33565b849061209f612096611f72565b918787916133cd565b179061341a565b6120b260048890611f82565b611f33565b806120c0611f72565b166120db6120d56120d05f61179b565b610480565b91610480565b14612140575b50611e95565b611ea1565b80927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a461212c6121266121215f61179b565b610480565b91610480565b1461213357565b633a954ecd60e21b613075565b6121548561214e6001611edc565b906119ce565b61216861216360048390611f82565b6119b3565b61218261217c6121775f61179b565b610480565b91610480565b1461218e575b506120e1565b806121a96121a361219e5f6119b3565b610480565b91610480565b036121b4575b612188565b6121c36121c892916004611f82565b611f33565b5f806121af565b5f90555f61203c565b939192906121f76121f1856121eb613299565b906129a6565b156102a1565b612204579092919361200f565b632ce44b5f60e11b613075565b62a1148160e81b613075565b61222961222e916117b7565b6109fa565b90565b61223b905461221d565b90565b61225261224d61225792610337565b6113c7565b610480565b90565b61226961226f91939293610480565b92610480565b9161227b838202610480565b92818404149015171561228a57565b611b30565b6122a361229e6122a8926113f2565b6113c7565b610480565b90565b634e487b7160e01b5f52601260045260245ffd5b6122cb6122d191610480565b91610480565b9081156122dc570490565b6122ab565b6122f56122f06122fa926113c4565b6113c7565b610337565b90565b50906123076116fb565b50612310611998565b506123416123308361232a612325600f612231565b61223e565b9061225a565b61233b61271061228f565b906122bf565b9061234c600f61174a565b928261236061235a5f61179b565b91610480565b1490816123ab575b5080612388575b612376575b565b90506123826001611edc565b90612374565b50612393600f612231565b6123a561239f5f6122e1565b91610337565b1161236f565b90506123bf6123b95f61179b565b91610480565b115f612368565b6123d7906123d2612ecb565b6123d9565b565b806123f46123ee6123e95f6113e6565b610308565b91610308565b1461243f5761240481600a611468565b61243a7f1a0e466d4f6247f72c5a57a3478faaefe157d8203dad62b009269044b69ef3db91612431610242565b918291826104d1565b0390a1565b5f63e6c4247b60e01b81528061245760048201610398565b0390fd5b612464906123c6565b565b906124786124738361073d565b610703565b918252565b6124865f612466565b90565b61249161247d565b90565b916124a892916124a2612489565b926128ab565b565b6124bb906124b6612ecb565b6124f3565b565b906124c960ff91611411565b9181191691161790565b906124e86124e36124ef926118bb565b6118c7565b82546124bd565b9055565b612507612502600e839061185b565b611885565b61255c57612521600161251c600e849061185b565b6124d3565b6125577fb7269578552456138d47dc37471d94886205143f138387446eff0148047965f69161254e610242565b918291826104d1565b0390a1565b5f63b73e95e160e01b81528061257460048201610398565b0390fd5b612581906124aa565b565b6125a061259b6125a5926125956116fb565b506130da565b611ebd565b61144d565b90565b90565b6125bf6125ba6125c4926125a8565b6113c7565b610480565b90565b6125d867ffffffffffffffff6125ab565b90565b6125e3611998565b50806125ff6125f96125f45f6113e6565b610308565b91610308565b1461262357612612612617916005611ef8565b6119b3565b61261f6125c7565b1690565b6323d3ad8160e21b613075565b612638612ecb565b612640612642565b565b61265361264e5f6113e6565b613435565b565b61265d612630565b565b6126689061144d565b90565b5f7f7570646174654d65746164617461000000000000000000000000000000000000910152565b61269f600e6020926103e4565b6126a88161266b565b0190565b906126fa60a09361270c969897956126ed6126e2612705956126d560c08901915f8a01906104c4565b8781036020890152612692565b926040870190610638565b8482036060860152610402565b966080830190610638565b0190610638565b565b60200190565b5190565b9261277290612778929361275a61272e3061265f565b61274b88938890469161273f610242565b968795602087016126ac565b602082018103825203826106da565b61276c61276682612714565b9161270e565b206134bb565b156102a1565b6127cc576127919061278c600c8490611b69565b611d53565b6127c77ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7916127be610242565b91829182610645565b0390a1565b5f632057875960e21b8152806127e460048201610398565b0390fd5b6127f06116fb565b506127fb600961174a565b90565b61280f9061280a612ecb565b612811565b565b61281c90600d611d53565b7fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad962612845610242565b8061284f81610398565b0390a1565b61285d906127fe565b565b6128676115c9565b5061287260036116d9565b90565b90612880600a6117d1565b61288f5761288d9161353f565b565b5f6321a5eee560e11b8152806128a760048201610398565b0390fd5b91926128b983838691611f98565b813b6128cd6128c75f61179b565b91610480565b036128d9575b50505050565b6128f0936128ea9392909192613706565b156102a1565b6128fd575f8080806128d3565b6368d2bf6b60e11b613075565b61292161292691612919611322565b50600e61185b565b611885565b90565b6129316115c9565b5061294461293e82612f64565b156102a1565b61295e5761295661295b91600c611b69565b6116d9565b90565b5f6307ed98ed60e31b81528061297660048201610398565b0390fd5b6129826115c9565b5061298d600d6116d9565b90565b9061299a90611459565b5f5260205260405f2090565b6129cb916129c16129c6926129b9611322565b506007612990565b61185b565b611885565b90565b5190565b5190565b906129e0826129ce565b8110156129f1576020809102010190565b611afc565b612a009051610480565b90565b90612a0d826129d2565b811015612a1e576020809102010190565b611afc565b92939193612a30846129ce565b612a4a612a44612a3f85611ae9565b610480565b91610480565b14158015612cb7575b612c9b5791612a64849592956129ce565b94612a6e5f61179b565b935b84612a83612a7d89610480565b91610480565b1015612b3657612a9d85612a976001611edc565b90611b44565b5b80612ab1612aab8a610480565b91610480565b1015612b1d57612aca612ac58888906129d6565b6129f6565b612aee612ae8612ae3612ade8b86906129d6565b6129f6565b610480565b91610480565b14612b0157612afc90611aed565b612a9e565b5f63aa22026360e01b815280612b1960048201610398565b0390fd5b509193612b2c90939193611aed565b9391929092612a70565b92919095949350612b465f61179b565b5b80612b5a612b5488610480565b91610480565b1015612c9257612be6612be0612b6f3061265f565b612bbb612b85612b808a87906129d6565b6129f6565b91612bac612b948d8890611b10565b51894691612ba0610242565b968795602087016126ac565b602082018103825203826106da565b612bcd612bc782612714565b9161270e565b20612bd9878590612a03565b51906134bb565b156102a1565b612c7657612c7190612c20612bfc898390611b10565b51612c1b600c612c15612c108b87906129d6565b6129f6565b90611b69565b611d53565b612c33612c2e8783906129d6565b6129f6565b612c697ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce791612c60610242565b91829182610645565b0390a1611aed565b612b47565b5f632057875960e21b815280612c8e60048201610398565b0390fd5b50945050505050565b5f630e52390960e41b815280612cb360048201610398565b0390fd5b50612cc1846129ce565b612cdb612cd5612cd0846129d2565b610480565b91610480565b1415612a53565b612cf390612cee612ecb565b612cf5565b565b80612d10612d0a612d055f6113e6565b610308565b91610308565b14612d2057612d1e90613435565b565b612d43612d2c5f6113e6565b5f918291631e4fbdf760e01b8352600483016104d1565b0390fd5b612d5090612ce2565b565b92919091612d73612d6d612d68600e339061185b565b611885565b156102a1565b612de157612d8a612d826130af565b9484906130c4565b612d935f61179b565b5b80612da7612da186610480565b91610480565b1015612dda57612dd590612dd084612dcb600c612dc58a8690611b44565b90611b69565b611d53565b611aed565b612d94565b5092505050565b5f630b094f2760e31b815280612df960048201610398565b0390fd5b90565b612e14612e0f612e1992612dfd565b611329565b610254565b90565b90565b612e33612e2e612e3892612e1c565b611329565b610254565b90565b90565b612e52612e4d612e5792612e3b565b611329565b610254565b90565b612e62611322565b5080612e7a612e746301ffc9a7612e00565b91610254565b148015612ead575b908115612e8e575b5090565b9050612ea6612ea0635b5e139f612e3e565b91610254565b145f612e8a565b5080612ec5612ebf6380ac58cd612e1f565b91610254565b14612e82565b612ed36127e8565b612eec612ee6612ee1613813565b610308565b91610308565b03612ef357565b612f15612efe613813565b5f91829163118cdaa760e01b8352600483016104d1565b0390fd5b612f2290610480565b5f8114612f30576001900390565b611b30565b90565b612f4c612f47612f5192612f35565b6113c7565b610480565b90565b612f61600160e01b612f38565b90565b90612f6d611322565b91612f7661308c565b612f88612f8283610480565b91610480565b1115612f92575b50565b80612fac612fa6612fa16130a1565b610480565b91610480565b116130545780612fcc612fc6612fc15f6119b3565b610480565b91610480565b10612fd7575b612f8f565b909150612fe2611998565b505b612ff8612ff360048390611f82565b6119b3565b908161301461300e6130095f61179b565b610480565b91610480565b03613028576130239150612f19565b612fe4565b50613031612f54565b1661304c6130466130415f61179b565b610480565b91610480565b14905f612fd2565b61307291925061306861306d916004611f82565b6119b3565b613820565b90565b5f5260045ffd5b9061308a919060019161383d565b565b613094611998565b5061309e5f61179b565b90565b6130a9611998565b505f1990565b6130b7611998565b506130c15f6119b3565b90565b906130d891906130d2612489565b9161390e565b565b6130e2611998565b506130eb61308c565b6130fd6130f783610480565b91610480565b1115613111575b636f96cda160e11b613075565b61312561312060048390611f82565b6119b3565b908061314061313a6131356130a1565b610480565b91610480565b1161324d578161316061315a6131555f61179b565b610480565b91610480565b1461319257508061316f612f54565b1661318a61318461317f5f61179b565b610480565b91610480565b036131045790565b8091506131af6131a96131a45f6119b3565b610480565b91610480565b1015613240575b6131d46131cf6131c7600493611f0e565b928390611f82565b6119b3565b90816131f06131ea6131e55f61179b565b610480565b91610480565b1461322f5750806131ff612f54565b1661321a61321461320f5f61179b565b610480565b91610480565b1461322c57636f96cda160e11b613075565b90565b6131d491506131cf909150506131b6565b636f96cda160e11b613075565b5061325781613820565b61326857636f96cda160e11b613075565b90565b90565b61328e6132939161327d611998565b50613286611998565b50600661171b565b61326b565b90815490565b6132a16116fb565b503390565b6132ae611322565b50821491141790565b925050506132c5600a6117d1565b90816132ef575b506132d357565b5f6321a5eee560e11b8152806132eb60048201610398565b0390fd5b905061330b6133056133005f6113e6565b610308565b91610308565b14155f6132cc565b90565b61332a61332561332f92613313565b6113c7565b610480565b90565b61333c60e8613316565b90565b61335e9061335861335261336394610480565b91610480565b906105c3565b610480565b90565b62ffffff1690565b61338261337d61338792610480565b6113c7565b613366565b90565b61339e6133996133a392613366565b6113c7565b610480565b90565b6133c5906133bf6133b96133ca94610480565b91610480565b90611892565b610480565b90565b61340991613404916133fb6133f6613417966133e7611998565b506133f0613332565b9061333f565b61336e565b909190916139e2565b61338a565b613411613332565b906133a6565b90565b613422611998565b5060018060a01b0316904260a01b171790565b61343f600961174a565b61344a826009611468565b9061347e6134787f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611459565b91611459565b91613487610242565b8061349181610398565b0390a3565b90565b6134a290613496565b90565b906134af90613499565b5f5260205260405f2090565b906134c4611322565b506134d96134d4600b84906134a5565b611885565b613523576134ff613504926134fa60016134f5600b84906134a5565b6124d3565b6139f4565b613a2a565b61351f613519613514600a61174a565b610308565b91610308565b1490565b5f638b56642d60e01b81528061353b60048201610398565b0390fd5b906135668161356161355a6007613554613299565b90612990565b859061185b565b6124d3565b61356e613299565b9190916135b96135a76135a17f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3193611459565b93611459565b936135b0610242565b918291826102b3565b0390a3565b6135c790611431565b90565b6135d3906135be565b90565b6135df9061144d565b90565b905051906135ef82610260565b565b9060208282031261360a57613607915f016135e2565b90565b61024c565b60209181520190565b6136376136406020936136459361362e81612714565b9384809361360f565b958691016103ed565b6103f8565b0190565b909261367c90613672613689969461366860808601975f8701906104c4565b60208501906104c4565b6040830190610638565b6060818403910152613618565b90565b613694610242565b3d5f823e3d90fd5b63ffffffff1690565b6136b96136b46136be9261369c565b611329565b610254565b90565b906136d36136ce83610c07565b610703565b918252565b606090565b3d5f146136f8576136ed3d6136c1565b903d5f602084013e5b565b6137006136d8565b906136f6565b60209194936137505f61372861372361371d611322565b996135ca565b6135d6565b9261375b63150b7a029161373a613299565b9698613744610242565b998a9889978896611329565b865260048601613649565b03925af180915f926137e3575b50155f146137be5750600161377957565b6137816136dd565b61378a81612714565b6137a461379e6137995f61179b565b610480565b91610480565b146137b157805190602001fd5b6368d2bf6b60e11b613075565b9091506137df6137d96137d463150b7a026136a5565b610254565b91610254565b1490565b61380591925060203d811161380c575b6137fd81836106da565b8101906135f1565b905f613768565b503d6137f3565b61381b6116fb565b503390565b613828611322565b50600160e01b81169060018060a01b03161190565b9161384782612583565b90806138ec575b6138bf575b61386a835f6138646006869061171b565b01611468565b916138a76138a161389b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92595611459565b92611459565b926116ff565b926138b0610242565b806138ba81610398565b0390a4565b6138da6138d4826138ce613299565b906129a6565b156102a1565b15613853576367d9dca160e11b613075565b506138f5613299565b61390761390183610308565b91610308565b141561384e565b919061391b838290613a86565b823b61392f6139295f61179b565b91610480565b0361393a575b505050565b9091926139506139495f6119b3565b92836119c0565b9160015b15613995575b5f61398361397d61396a5f6113e6565b8861397488611aed565b97908992613706565b156102a1565b15613954576368d2bf6b60e11b613075565b826139a86139a283610480565b91610480565b1061395a5792509250506139cd6139c76139c15f6119b3565b92610480565b91610480565b036139da575f8080613935565b5f80fd5b5f90565b5050506139ed6139de565b90565b5f90565b6139fc6139f0565b507f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f52601c52603c5f2090565b613a4991613a4091613a3a6116fb565b50613ca2565b90929192613dac565b90565b90565b613a63613a5e613a6892613a4c565b6113c7565b610480565b90565b613a756040613a4f565b90565b90613a839102610480565b90565b613a8f5f6119b3565b9082613aab613aa5613aa05f61179b565b610480565b91610480565b14613c5257613b6d613b7291613acd613ac35f6113e6565b82869088926132b7565b613b11613b0082613add88613e7d565b613af9613ae95f6113e6565b86613af35f61179b565b916133cd565b179061341a565b613b0c60048790611f82565b611f33565b613b68613b4486613b336001613b2e613b28613a6b565b91611edc565b6133a6565b613b3d6001611edc565b1790613a78565b613b62613b5360058590611ef8565b91613b5d836119b3565b6119ce565b90611f33565b611e95565b611ea1565b9182613b8e613b88613b835f61179b565b610480565b91610480565b14613c4657613b9d90826119ce565b9092613bb382613bad6001611edc565b906119c0565b613bcc613bc6613bc16130a1565b610480565b91610480565b11613c395760015b15613c07575b5f84845f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4613bd4565b92613c1190611aed565b9283613c25613c1f84610480565b91610480565b03613bda579250613c3791505f611f33565b565b6340b23f1d60e11b613075565b622e076360e81b613075565b63b562e8dd60e01b613075565b5f90565b90565b613c7a613c75613c7f92613c63565b6113c7565b610480565b90565b613c96613c91613c9b92610480565b611411565b613496565b90565b5f90565b919091613cad6116fb565b50613cb6613c5f565b50613cbf6139f0565b50613cc983612714565b613cdc613cd66041613c66565b91610480565b145f14613d2357613d1c9192613cf06139f0565b50613cf96139f0565b50613d02613c9e565b506020810151606060408301519201515f1a909192613f1c565b9192909190565b50613d2d5f6113e6565b90613d41613d3c600294612714565b613c82565b91929190565b634e487b7160e01b5f52602160045260245ffd5b60041115613d6557565b613d47565b90613d7482613d5b565b565b613d7f90613496565b9052565b9190613d96905f60208501940190613d76565b565b613da4613da991611731565b6116ff565b90565b80613dbf613db95f613d6a565b91613d6a565b145f14613dca575050565b80613dde613dd86001613d6a565b91613d6a565b145f14613e01575f63f645eedf60e01b815280613dfd60048201610398565b0390fd5b80613e15613e0f6002613d6a565b91613d6a565b145f14613e4357613e3f613e2883613d98565b5f91829163fce698f760e01b835260048301610645565b0390fd5b613e56613e506003613d6a565b91613d6a565b14613e5e5750565b613e79905f9182916335e2f38360e21b835260048301613d83565b0390fd5b600190613e88611998565b501460e11b90565b90565b613ea7613ea2613eac92613e90565b6113c7565b610480565b90565b60ff1690565b613ebe90613eaf565b9052565b613ef7613efe94613eed606094989795613ee3608086019a5f870190613d76565b6020850190613eb5565b6040830190613d76565b0190613d76565b565b613f14613f0f613f19926113c4565b611411565b613496565b90565b939293613f276116fb565b50613f30613c5f565b50613f396139f0565b50613f4385613d98565b613f75613f6f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0613e93565b91610480565b116140025790613f98602094955f94939293613f8f610242565b94859485613ec2565b838052039060015afa15613ffd57613fb05f51611411565b80613fcb613fc5613fc05f6113e6565b610308565b91610308565b14613fe1575f91613fdb5f613f00565b91929190565b50613feb5f6113e6565b600191613ff75f613f00565b91929190565b61368c565b50505061400e5f6113e6565b906003929192919056fea26469706673582212203047aa78ef344282470254aa715a377298a19f295be7b385172af95e0095657f64736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000dea304f6da668ee47d2b5eb1ff98b3405cb48a700000000000000000000000000000000000000000000000000000000000002000000000000000000000000004e99160179b1f97369b301617a155dc2ddecb5ae0000000000000000000000004e99160179b1f97369b301617a155dc2ddecb5ae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b436c617368206f6620436f696e732053686f7020526563656970740000000000000000000000000000000000000000000000000000000000000000000000000b41504558524543454950540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261666b7265696633747476376a7a777277623773756c7865647574796c737768716b6b696b716b7076376e6f3736756c783369666b6c767364790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000