0 txs
0 calls
constructor
constructor(string _name, string _symbol, address _lzEndpoint, uint256 _startId, uint256 _maxId, uint256 _maxGlobalId, string _baseTokenURI, string _hiddenURI, uint16 _tax, uint128 _price, address _taxRecipient, bool preMint, address _beneficiary)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
bridgeFee
viewfunction bridgeFee() view returns (uint256)
DEFAULT_PAYLOAD_SIZE_LIMIT
viewfunction DEFAULT_PAYLOAD_SIZE_LIMIT() view returns (uint256)
dstChainIdToBatchLimit
viewfunction dstChainIdToBatchLimit(uint16) view returns (uint256)
dstChainIdToTransferGas
viewfunction dstChainIdToTransferGas(uint16) view returns (uint256)
estimateSendBatchFee
viewfunction estimateSendBatchFee(uint16 _dstChainId, bytes _toAddress, uint256[] _tokenIds, bool _useZro, bytes _adapterParams) view returns (uint256, uint256)
estimateSendFee
viewfunction estimateSendFee(uint16 _dstChainId, bytes _toAddress, uint256 _tokenId, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
FUNCTION_TYPE_SEND
viewfunction FUNCTION_TYPE_SEND() view returns (uint16)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
maxGlobalId
viewfunction maxGlobalId() view returns (uint256)
maxId
viewfunction maxId() view returns (uint256)
merkleRoot
viewfunction merkleRoot() view returns (bytes32)
metadata
viewfunction metadata() view returns (string baseURI, string hiddenMetadataURI)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
minGasToTransferAndStore
viewfunction minGasToTransferAndStore() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
payloadSizeLimitLookup
viewfunction payloadSizeLimitLookup(uint16) view returns (uint256)
precrime
viewfunction precrime() view returns (address)
startId
viewfunction startId() view returns (uint256)
state
viewfunction state() view returns (bool publicSaleStarted, bool privateSaleStarted, bool revealed)
storedCredits
viewfunction storedCredits(bytes32) view returns (uint16 srcChainId, address toAddress, uint256 index, bool creditsRemain)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
approve
payablefunction approve(address to, uint256 tokenId) payable
clearCredits
nonpayablefunction clearCredits(bytes _payload)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
mint
payablefunction mint(uint256 _nbTokens) payable
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId) payable
sendBatchFrom
payablefunction sendBatchFrom(address _from, uint16 _dstChainId, bytes _toAddress, uint256[] _tokenIds, address _refundAddress, address _zroPaymentAddress, bytes _adapterParams) payable
sendFrom
payablefunction sendFrom(address _from, uint16 _dstChainId, bytes _toAddress, uint256 _tokenId, address _refundAddress, address _zroPaymentAddress, bytes _adapterParams) payable
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBridgeFee
nonpayablefunction setBridgeFee(uint256 _bridgeFee)
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setDstChainIdToBatchLimit
nonpayablefunction setDstChainIdToBatchLimit(uint16 _dstChainId, uint256 _dstChainIdToBatchLimit)
setDstChainIdToTransferGas
nonpayablefunction setDstChainIdToTransferGas(uint16 _dstChainId, uint256 _dstChainIdToTransferGas)
setFinanceDetails
nonpayablefunction setFinanceDetails(tuple _finance)
setMaxTokensPerMint
nonpayablefunction setMaxTokensPerMint(uint64 _maxTokensPerMint)
setMerkleRoot
nonpayablefunction setMerkleRoot(bytes32 _newRoot)
setMetadata
nonpayablefunction setMetadata(tuple _metadata)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setMinGasToTransferAndStore
nonpayablefunction setMinGasToTransferAndStore(uint256 _minGasToTransferAndStore)
setMintRange
nonpayablefunction setMintRange(uint32 _start, uint32 _end)
setNftState
nonpayablefunction setNftState(tuple _state)
setPayloadSizeLimit
nonpayablefunction setPayloadSizeLimit(uint16 _dstChainId, uint256 _size)
setPrecrime
nonpayablefunction setPrecrime(address _precrime)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTrustedRemote
nonpayablefunction setTrustedRemote(uint16 _srcChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
transferFrom
payablefunction transferFrom(address from, address to, uint256 tokenId) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
whitelistMint
payablefunction whitelistMint(uint256 _nbTokens, bytes32[] _merkleProof) payable
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
CreditCleared
event CreditCleared(bytes32 _hashedPayload)
CreditStored
event CreditStored(bytes32 _hashedPayload, bytes _payload)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReceiveFromChain
event ReceiveFromChain(uint16 indexed _srcChainId, bytes indexed _srcAddress, address indexed _toAddress, uint256[] _tokenIds)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
SendToChain
event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes indexed _toAddress, uint256[] _tokenIds)
SetDstChainIdToBatchLimit
event SetDstChainIdToBatchLimit(uint16 _dstChainId, uint256 _dstChainIdToBatchLimit)
SetDstChainIdToTransferGas
event SetDstChainIdToTransferGas(uint16 _dstChainId, uint256 _dstChainIdToTransferGas)
SetMinDstGas
event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas)
SetMinGasToTransferAndStore
event SetMinGasToTransferAndStore(uint256 _minGasToTransferAndStore)
SetPrecrime
event SetPrecrime(address precrime)
SetTrustedRemote
event SetTrustedRemote(uint16 _remoteChainId, bytes _path)
SetTrustedRemoteAddress
event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
InvalidBridgeId
error InvalidBridgeId()
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
TokenIdOutOfRange
error TokenIdOutOfRange()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
creation bytecode
0x60a060405234620001725762005763803803806200001d81620001dd565b92833981016101a082820312620001725781516001600160401b0392908381116200017257826200005091830162000203565b9260208201518181116200017257836200006c91840162000203565b926200007b6040840162000286565b9160608401519160808501519160a08601519160c0870151828111620001725781620000a991890162000203565b9160e08801519081116200017257870190620000c59162000203565b91620000d561010088016200029b565b93620000e56101208901620002ab565b95620000f56101408a0162000286565b97620001056101608b01620002c0565b9961018001620001159062000286565b9a620001219c620002ce565b604051614c97908162000acc823960805181818161062101528181610a9101528181610d3d01528181611602015281816124f50152818161274301528181612f4401528181613b710152613f0d0152f35b600080fd5b50634e487b7160e01b600052604160045260246000fd5b60405190608082016001600160401b03811183821017620001ae57604052565b620001b862000177565b604052565b60408051919082016001600160401b03811183821017620001ae57604052565b6040519190601f01601f191682016001600160401b03811183821017620001ae57604052565b919080601f84011215620001725782516001600160401b03811162000276575b6020906200023a601f8201601f19168301620001dd565b92818452828287010111620001725760005b8181106200026257508260009394955001015290565b85810183015184820184015282016200024c565b6200028062000177565b62000223565b51906001600160a01b03821682036200017257565b519061ffff821682036200017257565b51906001600160801b03821682036200017257565b519081151582036200017257565b9b9a999697949193929098959860005433600160a01b6001900319821617600055600160a01b60019003958691823391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31660805260019c8d6006556200033a6001600855565b6200034590620005e7565b6200035090620006eb565b6200035a81600c55565b6014556016556015556200036d6200018e565b6001600160a01b038983168116808352959092169091166020820181905261ffff831660408301526001600160801b03939093166060909101819052601880546001600160a01b031916909417909355601980546001600160b01b03191690921760a09190911b61ffff60a01b16179055601a80546001600160801b0319169091179055620003fb620001bd565b91825260208201526200040e90620008f3565b620004196005601e55565b62000422575050565b60005b8281106200043257505050565b82906200043f8362000a0d565b0162000425565b90600182811c9216801562000478575b60208310146200046257565b634e487b7160e01b600052602260045260246000fd5b91607f169162000456565b601f811162000490575050565b600090600e825260208220906020601f850160051c83019410620004d1575b601f0160051c01915b828110620004c557505050565b818155600101620004b8565b9092508290620004af565b601f8111620004e9575050565b600090600f825260208220906020601f850160051c830194106200052a575b601f0160051c01915b8281106200051e57505050565b81815560010162000511565b909250829062000508565b601f811162000542575050565b600090601b825260208220906020601f850160051c8301941062000583575b601f0160051c01915b8281106200057757505050565b8181556001016200056a565b909250829062000561565b601f81116200059b575050565b600090601c825260208220906020601f850160051c83019410620005dc575b601f0160051c01915b828110620005d057505050565b818155600101620005c3565b9092508290620005ba565b80519091906001600160401b038111620006db575b62000614816200060e600e5462000446565b62000483565b602080601f831160011462000653575081929360009262000647575b50508160011b916000199060031b1c191617600e55565b01519050388062000630565b600e600052601f198316949091907fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd926000905b878210620006c2575050836001959610620006a8575b505050811b01600e55565b015160001960f88460031b161c191690553880806200069d565b8060018596829496860151815501950193019062000687565b620006e562000177565b620005fc565b80519091906001600160401b038111620007df575b620007188162000712600f5462000446565b620004dc565b602080601f83116001146200075757508192936000926200074b575b50508160011b916000199060031b1c191617600f55565b01519050388062000734565b600f600052601f198316949091907f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802926000905b878210620007c6575050836001959610620007ac575b505050811b01600f55565b015160001960f88460031b161c19169055388080620007a1565b806001859682949686015181550195019301906200078b565b620007e962000177565b62000700565b80519091906001600160401b038111620008e3575b6200081c8162000816601c5462000446565b6200058e565b602080601f83116001146200085b57508192936000926200084f575b50508160011b916000199060031b1c191617601c55565b01519050388062000838565b601c600052601f198316949091907f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211926000905b878210620008ca575050836001959610620008b0575b505050811b01601c55565b015160001960f88460031b161c19169055388080620008a5565b806001859682949686015181550195019301906200088f565b620008ed62000177565b62000804565b805180519092916001600160401b038211620009fd575b62000922826200091c601b5462000446565b62000535565b60209182601f82116001146200096f57819062000961959660009262000963575b50508160011b916000199060031b1c191617601b555b0151620007ef565b565b01519050388062000943565b601b600052601f198216957f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc19660005b818110620009e557509162000961969791846001959410620009cb575b505050811b01601b5562000959565b015160001960f88460031b161c19169055388080620009bc565b8383015189556001909801979286019286016200099f565b62000a0762000177565b6200090a565b90600c549160018060a01b03169160009281845260106020524260a01b81176040852055808452601160205260408420680400000000000000048154019055801562000abd57600482019193600180805b62000a74575b5050505062000961919250600c55565b1562000aaa575b81818785857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a462000a5e565b8095019483860362000a7b578062000a64565b622e076360e81b8452600484fdfe60806040526004361015610013575b600080fd5b60003560e01c80621d35671461056257806301ffc9a71461055957806306a8e4d91461055057806306fdde031461054757806307e0db171461053e578063081812fc14610535578063095ea7b31461052c5780630b4cad4c146105235780630df374831461051a57806310ddb13714610511578063219d59b11461050857806322a3ecf9146104ff57806323b872dd146104f657806329d7e69b146104ed5780632a205e3d146104e45780632eb4a7ab146104db578063392f37e9146104d25780633ccfd60b146104c95780633d8b38f6146104c05780633f1f4fa4146104b757806342842e0e146104ae57806342d65a8d146104a5578063482881901461049c5780634ac3f4ff14610493578063519056361461048a5780635b8c41e6146104815780636352211e1461047857806366ad5c8a1461046f57806370a0823114610466578063715018a61461045d5780637533d78814610454578063796b0c5c1461044b5780637ca4b719146104425780637cb647591461043957806382b12dd7146104305780638cfd8f5c146104275780638da5cb5b1461041e5780638ffa1f2a14610415578063950c8a741461040c57806395d89b4114610403578063998cdf83146103fa5780639ea5d6b1146103f15780639f38369a146103e8578063a0712d68146103df578063a22cb465146103d6578063a6c3d165146103cd578063ab3ffb93146103c4578063af3fb21c146103bb578063b353aaa7146103b2578063b88d4fde146103a9578063baf3292d146103a0578063c19d93fb14610397578063c44618341461038e578063c5ea3c6514610385578063c7d8505a1461037c578063c87b56dd14610373578063c8a1df861461036a578063cbed8b9c14610361578063d12473a514610358578063d1deba1f1461034f578063d2cab05614610346578063df2a5b3b1461033d578063e985e9c514610334578063eb8d72b71461032b578063f235364114610322578063f2fde38b14610319578063f5ecbdbc146103105763fa25f9b61461030857600080fd5b61000e612fb9565b5061000e612ed6565b5061000e612e20565b5061000e612d9b565b5061000e612c63565b5061000e612c0a565b5061000e612b1c565b5061000e6129d7565b5061000e6128ae565b5061000e6127e9565b5061000e6126ee565b5061000e6126a1565b5061000e612681565b5061000e612662565b5061000e612643565b5061000e612625565b5061000e6125e7565b5061000e612576565b5061000e612524565b5061000e6124de565b5061000e6124c1565b5061000e612427565b5061000e612232565b5061000e61219f565b5061000e6120d6565b5061000e612032565b5061000e611f69565b5061000e611f47565b5061000e611ea2565b5061000e611e78565b5061000e611c97565b5061000e611c6d565b5061000e611c11565b5061000e611bf2565b5061000e611bbd565b5061000e611b29565b5061000e611ace565b5061000e611a76565b5061000e611a11565b5061000e6119b3565b5061000e611857565b5061000e611827565b5061000e6117a4565b5061000e6116c2565b5061000e611688565b5061000e611669565b5061000e6115e7565b5061000e6115a3565b5061000e611569565b5061000e611513565b5061000e6113e1565b5061000e6112e9565b5061000e61110b565b5061000e61107f565b5061000e610f3b565b5061000e610f28565b5061000e610ea3565b5061000e610d9e565b5061000e610d13565b5061000e610cd3565b5061000e610c2e565b5061000e610b75565b5061000e610b10565b5061000e610a67565b5061000e610986565b5061000e6107b2565b5061000e610732565b5061000e610609565b61ffff81160361000e57565b9181601f8401121561000e578235916001600160401b03831161000e576020838186019501011161000e57565b90608060031983011261000e576004356105bd8161056b565b916001600160401b039060243582811161000e57816105de91600401610577565b93909392604435818116810361000e579260643591821161000e5761060591600401610577565b9091565b503461000e57610618366105a4565b929493919291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036106db5761069e6106a6926106ac9761069761067d6106788a61ffff166000526001602052604060002090565b611a5b565b80519081841491826106d1575b50816106ae575b50612ff3565b3691611023565b923691611023565b92613218565b005b90506106bb368486611023565b6020815191012090602081519101201438610691565b151591503861068a565b60405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c657200006044820152606490fd5b6001600160e01b031981160361000e57565b503461000e57602036600319011261000e57602060043561075281610720565b63ffffffff60e01b166301ffc9a760e01b8114908115908161077b575b50506040519015158152f35b906107a1575b8115610790575b50388061076f565b635b5e139f60e01b14905038610788565b6380ac58cd60e01b81149150610781565b503461000e576003196020368201811361000e57600435906001600160401b039081831161000e5760408360040194843603011261000e5760185461080c90336001600160a01b0391821614908115610911575b50614742565b6108168480614799565b928311610904575b6108328361082d601b5461112a565b613115565b600091601f8411600114610885575092826106ac95936024936108749660009261087a575b50508160011b916000199060031b1c191617601b555b0190614799565b906147cb565b013590503880610857565b601b60005291601f198416600080516020614ba28339815191529382905b8282106108ec575050936024936108749693600193836106ac9a98106108d2575b505050811b01601b5561086d565b0135600019600384901b60f8161c191690553880806108c4565b806001859782949688013581550196019301906108a3565b61090c610f5a565b61081e565b905060005416331438610806565b600091031261000e57565b60005b83811061093d5750506000910152565b818101518382015260200161092d565b906020916109668151809281855285808601910161092a565b601f01601f1916010190565b90602061098392818152019061094d565b90565b503461000e57600080600319360112610a645760405181600e546109a98161112a565b80845290600190818116908115610a3c57506001146109e3575b6109df846109d381880382610fc7565b60405191829182610972565b0390f35b600e8352602094507fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd5b828410610a2957505050816109df936109d392820101936109c3565b8054858501870152928501928101610a0d565b6109df96506109d39450602092508593915060ff191682840152151560051b820101936109c3565b80fd5b503461000e5760006020366003190112610a6457600435610a878161056b565b610a8f613562565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b15610b0c57602461ffff918360405195869485936307e0db1760e01b85521660048401525af18015610aff575b610af3575080f35b610afc90610f71565b80f35b610b076130b5565b610aeb565b5080fd5b503461000e57602036600319011261000e57600435610b2e816136a3565b15610b53576000526012602052602060018060a01b0360406000205416604051908152f35b6333d1c03960e21b60005260046000fd5b6001600160a01b0381160361000e57565b50604036600319011261000e57600435610b8e81610b64565b6024356001600160a01b0380610ba3836135eb565b1690813303610bfe575b600083815260126020526040812080546001600160a01b0319166001600160a01b0387161790559316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b81600052601360205260ff610c173360406000206135d4565b5416610bad576367d9dca160e11b60005260046000fd5b503461000e57602036600319011261000e57600435610c4b613562565b8015610c82576020817ffebbc4f8bb9ec2313950c718d43123124b15778efda4c1f1d529de2995b4f34d92600855604051908152a1005b60405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b6064820152608490fd5b503461000e57604036600319011261000e5761ffff600435610cf48161056b565b610cfc613562565b166000526003602052602435604060002055600080f35b503461000e5760006020366003190112610a6457600435610d338161056b565b610d3b613562565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908290823b15610b0c57602461ffff918360405195869485936310ddb13760e01b85521660048401525af18015610aff57610af3575080f35b503461000e57608036600319011261000e57610db8613562565b610de9600435610dc781610b64565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b610e1a602435610df881610b64565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b604435610e268161056b565b6019805461ffff60a01b191660a09290921b61ffff60a01b169190911790556001600160801b036064359081169081900361000e57601a80546001600160801b031916919091179055005b602090600319011261000e5760043590565b600052600b602052604060002090565b6000526010602052604060002090565b503461000e57610eb236610e71565b600052600b6020526080604060002080549060ff6002600183015492015416906040519261ffff8116845260018060a01b039060101c166020840152604083015215156060820152f35b606090600319011261000e57600435610f1481610b64565b90602435610f2181610b64565b9060443590565b506106ac610f3536610efc565b91613722565b503461000e57600036600319011261000e576020601454604051908152f35b50634e487b7160e01b600052604160045260246000fd5b6001600160401b038111610f8457604052565b610f8c610f5a565b604052565b608081019081106001600160401b03821117610f8457604052565b60c081019081106001600160401b03821117610f8457604052565b601f909101601f19168101906001600160401b03821190821017610f8457604052565b60405190610ff782610f91565b565b6020906001600160401b038111611016575b601f01601f19160190565b61101e610f5a565b61100b565b92919261102f82610ff9565b9161103d6040519384610fc7565b82948184528183011161000e578281602093846000960137010152565b9080601f8301121561000e5781602061098393359101611023565b8015150361000e57565b503461000e5760a036600319011261000e5760043561109d8161056b565b6001600160401b039060243582811161000e576110be90369060040161105a565b90606435906110cc82611075565b60843593841161000e576110e76110f994369060040161105a565b926110f36044356146ff565b91613af3565b60408051928352602083019190915290f35b503461000e57600036600319011261000e576020601754604051908152f35b90600182811c9216801561115a575b602083101461114457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611139565b601c54600092916111748261112a565b9081815260019283811690816000146111ce575060011461119457505050565b90929350601c6000526020928360002092846000945b8386106111ba5750505050010190565b8054858701830152940193859082016111aa565b91935050602093945060ff191683830152151560051b010190565b601b54600092916111f98261112a565b9081815260019283811690816000146111ce575060011461121957505050565b90929350601b6000526020928360002092846000945b83861061123f5750505050010190565b80548587018301529401938590820161122f565b90600092918054916112648361112a565b9182825260019384811690816000146112c65750600114611286575b50505050565b90919394506000526020928360002092846000945b8386106112b2575050505001019038808080611280565b80548587018301529401938590820161129b565b9294505050602093945060ff191683830152151560051b01019038808080611280565b503461000e57600080600319360112610a645760405181601b5461130c8161112a565b808452906001908181169081156113b95750600114611372575b6113648461133681880382610fc7565b6109df6040516113508161134981611164565b0382610fc7565b60405193849360408552604085019061094d565b90838203602085015261094d565b601b835260209450600080516020614ba28339815191525b8284106113a65750505081611364936113369282010193611326565b805485850187015292850192810161138a565b61136496506113369450602092508593915060ff191682840152151560051b82010193611326565b503461000e57600080600319360112610a645761149c8180808060018060a01b0361147282808080856018541680331480156114cf575b61142190614742565b61142c811515613cd4565b61143c6019549788161515613cd4565b61146361145c61145461ffff479a60a01c168a613cc1565b612710900490565b809861320b565b908282156114c6575bf1613cd4565b60195461148f906001600160a01b03165b6001600160a01b031690565b8282156114c657f1613cd4565b610afc818080806114b761148360185460018060a01b031690565b47908282156114c657f1613cd4565b506108fc61146c565b50815487163314611418565b90604060031983011261000e576004356114f48161056b565b91602435906001600160401b03821161000e5761060591600401610577565b503461000e57602061ffff61155a61152a366114db565b939091166000526001845261134961154c604060002060405192838092611253565b848151910120923691611023565b82815191012014604051908152f35b503461000e57602036600319011261000e5761ffff60043561158a8161056b565b1660005260036020526020604060002054604051908152f35b506106ac6115b036610efc565b60405192909190602084016001600160401b038111858210176115da575b60405260008452613872565b6115e2610f5a565b6115ce565b503461000e576115f6366114db565b9190611600613562565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b1561000e57604051928380926342d65a8d60e01b82528161165760009889978894600485016130e3565b03925af18015610aff57610af3575080f35b503461000e57600036600319011261000e576020600854604051908152f35b503461000e57602036600319011261000e5761ffff6004356116a98161056b565b1660005260096020526020604060002054604051908152f35b5060e036600319011261000e576004356116db81610b64565b6024356116e78161056b565b6001600160401b039160443583811161000e5761170890369060040161105a565b906084359061171682610b64565b60a4359261172384610b64565b60c43595861161000e5761173e6106ac96369060040161105a565b9461174a6064356146ff565b92613d0c565b906117636020928281519485920161092a565b0190565b60209061178192826040519483868095519384920161092a565b82019081520301902090565b9060018060401b0316600052602052604060002090565b503461000e57606036600319011261000e576004356117c28161056b565b6001600160401b0360243581811161000e576117e290369060040161105a565b90604435908116810361000e576118116118169261ffff6109df95166000526005602052604060002090611767565b61178d565b546040519081529081906020820190565b503461000e57602036600319011261000e5760206001600160a01b0361184e6004356135eb565b16604051908152f35b503461000e57611866366105a4565b93915030330361195f576118d361189f61ffff92611897600080516020614bc2833981519152956014973691611023565b963691611023565b9485516118b4602080890192890101826142b0565b960151966118c28789614515565b875181106118f3575b505050613cdb565b936118ee60405192839260018060a01b031697169482613cfb565b0390a4005b611945600080516020614c22833981519152938351902091611913610fea565b61ffff8d168152906001600160a01b038c1660208301525b60408201526001606082015261194083610e83565b614346565b611954604051928392836143a3565b0390a13880806118cb565b60405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608490fd5b503461000e57602036600319011261000e576004356119d181610b64565b6001600160a01b03168015611a00576000526011602052602060018060401b0360406000205416604051908152f35b6323d3ad8160e21b60005260046000fd5b503461000e57600080600319360112610a6457611a2c613562565b80546001600160a01b03198116825581906001600160a01b0316600080516020614be28339815191528280a380f35b90610ff7611a6f9260405193848092611253565b0383610fc7565b503461000e57602036600319011261000e5761ffff600435611a978161056b565b1660005260016020526109df611349611aba604060002060405192838092611253565b60405191829160208352602083019061094d565b503461000e57604036600319011261000e5760043563ffffffff9081811680910361000e576024359180831680930361000e57611b09613562565b600c5460145490031681111561000e578082111561000e57601455601555005b503461000e57606036600319011261000e57601854611b5c90336001600160a01b03918216149081156109115750614742565b611b7d600435611b6b81611075565b60ff8019601d54169115151617601d55565b602435611b8981611075565b601d5461ff0062ff0000604435611b9f81611075565b151560101b1692151560081b169062ffff0019161717601d55600080f35b503461000e57611bcc36610e71565b601854611bed90336001600160a01b03918216149081156109115750614742565b601755005b503461000e57600036600319011261000e576020600754604051908152f35b503461000e57604036600319011261000e576020611c64600435611c348161056b565b61ffff60243591611c448361056b565b166000526002835260406000209061ffff16600052602052604060002090565b54604051908152f35b503461000e57600036600319011261000e576000546040516001600160a01b039091168152602090f35b503461000e57602036600319011261000e576004356001600160401b03811161000e57611cc890369060040161105a565b600260065414611e33576002600655611d0d8151602080840191822093611d03611cfe6002611cf688610e83565b015460ff1690565b61445f565b80510101906142b0565b9050611d1882610e83565b50611d4c81611d39611d2985610e83565b5460101c6001600160a01b031690565b6001611d4486610e83565b0154906145b3565b90611d646001611d5b85610e83565b0154831161449f565b518103611dcd5750611dbf81611daf611d9d7fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba23394610e83565b60026000918281558260018201550155565b6040519081529081906020820190565b0390a15b6106ac6001600655565b61194082611de8611de0611e2e95610e83565b5461ffff1690565b92611e1d611df8611d2984610e83565b611e0d611e03610fea565b61ffff9097168752565b6001600160a01b03166020860152565b604084015260016060840152610e83565b611dc3565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b503461000e57600036600319011261000e576004546040516001600160a01b039091168152602090f35b503461000e57600080600319360112610a645760405181600f54611ec58161112a565b80845290600190818116908115610a3c5750600114611eee576109df846109d381880382610fc7565b600f8352602094507f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8025b828410611f3457505050816109df936109d392820101936109c3565b8054858501870152928501928101611f18565b503461000e57602036600319011261000e57611f61613562565b600435600755005b503461000e57604036600319011261000e57600435611f878161056b565b602435611f92613562565b8015611fe2578161ffff7f7315f7654d594ead24a30160ed9ba2d23247f543016b918343591e93d7afdb6d9316600052600960205281604060002055611fdd604051928392836146e9565b0390a1005b60405162461bcd60e51b815260206004820152602260248201527f647374436861696e4964546f42617463684c696d6974206d757374206265203e604482015261020360f41b6064820152608490fd5b503461000e57602036600319011261000e5761ffff6004356120538161056b565b166000526001602052611349612073604060002060405192838092611253565b805115612091576109d38161208b6109df93516131e5565b906134e2565b60405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606490fd5b50602036600319011261000e57600435601e54811161218e5760ff601d54161561217d57806106ac9115612170575b61211961211482600c54613458565b6131fc565b60155410612163575b601a5461214990612143906001600160801b03165b6001600160801b031690565b82613cc1565b3410612156575b33614a83565b61215e6139e4565b612150565b61216b6139d2565b612122565b6121786139c0565b612105565b6321b51d1b60e01b60005260046000fd5b632715b60360e11b60005260046000fd5b503461000e57604036600319011261000e576004356121bd81610b64565b602435906121ca82611075565b3360005260136020526121f6826121e58360406000206135d4565b9060ff801983541691151516179055565b60405191151582526001600160a01b03169033907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b503461000e57612241366114db565b9061224a613562565b604051926020928083858701376122766034868381013060601b88820152036014810188520186610fc7565b61ffff8216600090815260018086526040822087519296909291906001600160401b038311612396575b6122b4836122ae865461112a565b86613194565b80601f84116001146123125750918080926123019695948a9b600080516020614b828339815191529b94612307575b50501b916000199060031b1c19161790555b604051938493846130e3565b0390a180f35b0151925038806122e3565b91939498601f19841661232a87600052602060002090565b938a905b82821061237f57505091600080516020614b82833981519152999a9593918561230198969410612366575b505050811b0190556122f5565b015160001960f88460031b161c19169055388080612359565b80888697829497870151815501960194019061232e565b61239e610f5a565b6122a0565b6020906001600160401b0381116123bc575b60051b0190565b6123c4610f5a565b6123b5565b81601f8201121561000e578035916123e0836123a3565b926123ee6040519485610fc7565b808452602092838086019260051b82010192831161000e578301905b828210612418575050505090565b8135815290830190830161240a565b5060e036600319011261000e5760043561244081610b64565b6024359061244d8261056b565b6001600160401b039160443583811161000e5761246e90369060040161105a565b60643584811161000e576124869036906004016123c9565b6084359161249383610b64565b60a435936124a085610b64565b60c43596871161000e576124bb6106ac97369060040161105a565b95613d0c565b503461000e57600036600319011261000e57602060405160018152f35b503461000e57600036600319011261000e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50608036600319011261000e5760043561253d81610b64565b60243561254981610b64565b606435916001600160401b03831161000e5761256c6106ac93369060040161105a565b9160443591613872565b503461000e57602036600319011261000e577f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b60206004356125b781610b64565b6125bf613562565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b503461000e57600036600319011261000e576060601d5460ff6040519181811615158352818160081c161515602084015260101c1615156040820152f35b503461000e57600036600319011261000e5760206040516127108152f35b503461000e57600036600319011261000e576020601554604051908152f35b503461000e57600036600319011261000e576020601654604051908152f35b503461000e57602036600319011261000e576109df611aba6004356148b6565b503461000e57602036600319011261000e576004356001600160401b0381169081900361000e576018546126e990336001600160a01b03918216149081156109115750614742565b601e55005b503461000e57608036600319011261000e5760043561270c8161056b565b6024356127188161056b565b6064356001600160401b03811161000e57612737903690600401610577565b9092612741613562565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561000e57600080946127b8604051978896879586946332fb62e760e21b865261ffff809216600487015216602485015260443560448501526080606485015260848401916130c2565b03925af180156127dc575b6127c957005b806127d66106ac92610f71565b8061091f565b6127e46130b5565b6127c3565b503461000e57604036600319011261000e576004356128078161056b565b602435612812613562565b801561285d578161ffff7fc46df2983228ac2d9754e94a0d565e6671665dc8ad38602bc8e544f0685a29fb9316600052600a60205281604060002055611fdd604051928392836146e9565b60405162461bcd60e51b815260206004820152602360248201527f647374436861696e4964546f5472616e73666572476173206d7573742062652060448201526203e20360ec1b6064820152608490fd5b506128b8366105a4565b9161ffff869492961660005260056020526128ec81604060002060206040518092878b83378782019081520301902061178d565b549182156129865761297a846129737fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e5996000612967876118118d896129618f611fdd9f8f61294061294d9236908d611023565b60208151910120146133bd565b61ffff166000526005602052604060002090565b916133a4565b5561069e36868c611023565b90876143ba565b60405195869586613413565b60405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608490fd5b50604036600319011261000e576001600160401b0360043560243582811161000e573660238201121561000e57806004013592831161000e573660248460051b8301011161000e57601e54821161218e57612a46612ab7916106ac94612a4a612a46601d5460ff9060081c1690565b1590565b612b0f575b601a54612a6e90612a68906001600160801b0316612137565b86613cc1565b3410612b02575b6017546040513360601b6001600160601b03191660208201908152919291602491612aad81603481015b03601f198101835282610fc7565b5190209301614b36565b612af5575b8015612ae8575b612ad261211482600c54613458565b60155410612ae05733614a83565b61215e6139d2565b612af06139c0565b612ac3565b612afd613a72565b612abc565b612b0a6139e4565b612a75565b612b17613a60565b612a4f565b503461000e57606036600319011261000e57600435612b3a8161056b565b602435612b468161056b565b60443591612b52613562565b8215612bcd57611fdd7f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09361ffff8316600052600260205280612ba78560406000209061ffff16600052602052604060002090565b556040519384938460409194939294606082019561ffff80921683521660208201520152565b60405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606490fd5b503461000e57604036600319011261000e57602060ff612c57600435612c2f81610b64565b60243590612c3c82610b64565b6001600160a01b0316600090815260138552604090206135d4565b54166040519015158152f35b503461000e57612c72366114db565b9190612c7c613562565b61ffff82166000908152600160208181526040832092949291906001600160401b038711612d8e575b612cb987612cb3855461112a565b85613194565b8590601f8811600114612d0e575091868087989361230195600080516020614c428339815191529993612d03575b501b906000198460031b1c1916179055604051938493846130e3565b880135925038612ce7565b90601f198816612d2385600052602060002090565b9288905b828210612d7757505091889391600080516020614c428339815191529899612301969410612d5d575b505082811b0190556122f5565b870135600019600386901b60f8161c191690553880612d50565b808685968294968c01358155019501930190612d27565b612d96610f5a565b612ca5565b503461000e5760a036600319011261000e57600435612db98161056b565b6001600160401b039060243582811161000e57612dda90369060040161105a565b60443583811161000e57612df29036906004016123c9565b60643591612dff83611075565b60843594851161000e57612e1a6110f995369060040161105a565b93613af3565b503461000e57602036600319011261000e57600435612e3e81610b64565b612e46613562565b6001600160a01b039081168015612e8257600080546001600160a01b0319811683178255909216600080516020614be28339815191528380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461000e57608036600319011261000e576109df600435612ef78161056b565b60243590612f048261056b565b612f0f604435610b64565b604051633d7b2f6f60e21b815261ffff91821660048201529116602482015230604482015260648035908201526000816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115612fac575b600091612f8b575b5060405191829182610972565b612fa6913d8091833e612f9e8183610fc7565b810190613090565b38612f7e565b612fb46130b5565b612f76565b503461000e57602036600319011261000e5761ffff600435612fda8161056b565b16600052600a6020526020604060002054604051908152f35b15612ffa57565b60405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b81601f8201121561000e57805161306481610ff9565b926130726040519485610fc7565b8184526020828401011161000e57610983916020808501910161092a565b9060208282031261000e5781516001600160401b03811161000e57610983920161304e565b506040513d6000823e3d90fd5b908060209392818452848401376000828201840152601f01601f1916010190565b60409061ffff610983959316815281602082015201916130c2565b818110613109575050565b600081556001016130fe565b90601f8211613122575050565b610ff791601b6000526020600020906020601f840160051c83019310613150575b601f0160051c01906130fe565b9091508190613143565b90601f8211613167575050565b610ff791601c6000526020600020906020601f840160051c8301931061315057601f0160051c01906130fe565b9190601f81116131a357505050565b610ff7926000526020600020906020601f840160051c8301931061315057601f0160051c01906130fe565b50634e487b7160e01b600052601160045260246000fd5b6013198101919082116131f457565b610ff76131ce565b6000198101919082116131f457565b919082039182116131f457565b9290915a604051633356ae4560e11b6020820190815261ffff871660248301526080604483015294916132848261327661325560a483018761094d565b6001600160401b03881660648401528281036023190160848401528861094d565b03601f198101845283610fc7565b600080916040519761329589610fac565b609689528260208a019560a036883751923090f1903d90609682116132dc575b6000908288523e156132c9575b5050505050565b6132d2946132e5565b38808080806132c2565b609691506132b5565b91936133917fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9561339f939561ffff815160208301209616958660005260056020526133578361334960208b6040600020826040519483868095519384920161092a565b82019081520301902061178d565b55613374604051978897885260a0602089015260a088019061094d565b6001600160401b039092166040870152858203606087015261094d565b90838203608085015261094d565b0390a1565b6020919283604051948593843782019081520301902090565b156133c457565b60405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608490fd5b9160609361ffff61343693989796981684526080602085015260808401916130c2565b6001600160401b0390951660408201520152565b90601f82018092116131f457565b919082018092116131f457565b1561346c57565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b156134a957565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b6134f6826134ef8161344a565b1015613465565b61350382825110156134a2565b8161351b575050604051600081526020810160405290565b60405191601f811691821560051b808486010193838501920101905b80841061354f5750508252601f01601f191660405290565b9092835181526020809101930190613537565b6000546001600160a01b0316330361357657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0316600090815260116020526040902090565b9060018060a01b0316600052602052604060002090565b90600082601454111580613698575b1561366e575061360982610e93565b549182156136275750600160e01b821615610ff7575b610ff76139f6565b9091505b6000190161363881610e93565b5490811561366457600160e01b8216156136605761363891506136596139f6565b905061362b565b5090565b6136389150613659565b91601654811115613680575b5061361f565b61368b919250610e93565b549081610ff7573861367a565b50600c5483106135fa565b90600082601454111580613717575b156136f35750905b6136c381610e93565b54806136e7575080156136da575b600019016136ba565b6136e26131ce565b6136d1565b600160e01b1615919050565b918060165410156137015750565b9091506000526010602052604060002054151590565b50600c5483106136b2565b91909161372e826135eb565b6001600160a01b0391821693909190818316859003613865575b600084815260126020526040902080546137716001600160a01b03881633908114908314171590565b613821575b613817575b50613785856135ba565b8054600019019055613796816135ba565b8054600101905516928391600160e11b4260a01b841781176137b786610e93565b558116156137e3575b50600080516020614c02833981519152600080a4156137db57565b610ff7613a2b565b600184016137f081610e93565b54156137fd575b506137c0565b600c5481146137f75761380f90610e93565b5538806137f7565b600090553861377b565b613853612a4661384c336138478b60018060a01b03166000526013602052604060002090565b6135d4565b5460ff1690565b1561377657613860613a19565b613776565b61386d613a08565b613748565b929190613880828286613722565b803b61388c5750505050565b613895936138f9565b156138a35738808080611280565b6368d2bf6b60e11b60005260046000fd5b9081602091031261000e575161098381610720565b3d156138f4573d906138da82610ff9565b916138e86040519384610fc7565b82523d6000602084013e565b606090565b604051630a85bd0160e11b8082523360048301526001600160a01b0392831660248301526044820194909452608060648201529293602092849290918391600091839061394a90608483019061094d565b0393165af160009181613990575b50613982576139656138c9565b805115613975575b805190602001fd5b61397d613a3d565b61396d565b6001600160e01b0319161490565b6139b291925060203d81116139b9575b6139aa8183610fc7565b8101906138b4565b9038613958565b503d6139a0565b50637685565760e01b60005260046000fd5b5063071ff01b60e41b60005260046000fd5b506333b2b04560e21b60005260046000fd5b50636f96cda160e11b60005260046000fd5b5062a1148160e81b60005260046000fd5b50632ce44b5f60e11b60005260046000fd5b50633a954ecd60e21b60005260046000fd5b506368d2bf6b60e11b60005260046000fd5b50622e076360e81b60005260046000fd5b506321b51d1b60e01b60005260046000fd5b50638a5ab21f60e01b60005260046000fd5b90815180825260208080930193019160005b828110613aa4575050505090565b835185529381019392810192600101613a96565b9091613acf6109839360408452604084019061094d565b916020818403910152613a84565b919082604091031261000e576020825192015190565b9060409361ffff939695613b23613b6d93613b1588519a8b9260208401613ab8565b03601f1981018a5289610fc7565b613b548651988996879663040a7bb160e41b885216600487015230602487015260a0604487015260a486019061094d565b911515606485015283820360031901608485015261094d565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215613bf1575b6000908193613bbe575b50600754613bba91613458565b9190565b613bba9350613be4915060403d8111613bea575b613bdc8183610fc7565b810190613add565b92613bad565b503d613bd2565b613bf96130b5565b613ba3565b15613c0557565b60405162461bcd60e51b8152602060048201526013602482015272746f6b656e4964735b5d20697320656d70747960681b6044820152606490fd5b15613c4757565b60405162461bcd60e51b815260206004820152602260248201527f62617463682073697a65206578636565647320647374206261746368206c696d6044820152611a5d60f21b6064820152608490fd5b8051821015613cab5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b818102929181159184041417156131f457565b1561000e57565b613cf39060206040519282848094519384920161092a565b810103902090565b906020610983928181520190613a84565b95909493919293613d1f85511515613bfe565b8451613d38600191828114908115613e4e575b50613c40565b855160005b818110613e325750505092613dda61ffff93613e0e937fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a9660405192613d9984613d8b8c8960208401613ab8565b03601f198101865285610fc7565b613dc7613dc0613db78d61ffff16600052600a602052604060002090565b548c5190613cc1565b848d61407d565b613dd36007543461320b565b938b613ec9565b613e096000808080613df8611483611483835460018060a01b031690565b600754908282156114c657f1613cd4565b613cdb565b60405190956001600160a01b031694909116928190613e2d9082613cfb565b0390a4565b80613e48613e4185938b613c97565b518c61418e565b01613d3d565b9050613e688961ffff166000526009602052604060002090565b54101538613d32565b92613e9661098397959361ffff613ea49416865260c0602087015260c086019061094d565b90848203604086015261094d565b6001600160a01b0391821660608401529316608082015280830360a09091015261094d565b94613ef29193929561ffff81166000526001602052613ef9604060002060405194858092611253565b0384610fc7565b825115613f8c57613f0b85518261411f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693843b1561000e57600096613f6091604051998a988997889662c5803160e81b885260048801613e71565b03925af18015613f7f575b613f725750565b806127d6610ff792610f71565b613f876130b5565b613f6b565b60405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608490fd5b15613ff157565b60405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606490fd5b1561403a57565b60405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606490fd5b91909160228351106140db5761ffff6022610ff794015191166000526002602052604060002060016000526020526040600020549182018092116140ce575b6140c7821515613fea565b1015614033565b6140d66131ce565b6140bc565b60405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606490fd5b61ffff166000526003602052604060002054908115614184575b1161414057565b606460405162461bcd60e51b815260206004820152602060248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152fd5b6127109150614139565b90610ff79130905b9190916141a2826135eb565b6001600160a01b0391821693908281168590036142a3575b83601454111580614297575b1561425e576141d4856135ba565b80546000190190556141e5826135ba565b805460010190554260a01b838316176141fd85610e93565b55600160e11b81161561422a575b505b168092600080516020614c02833981519152600080a4156137db57565b6001840161423781610e93565b5415614244575b5061420b565b600c54811461423e5761425690610e93565b55388061423e565b50614268846135ba565b8054600019019055614279816135ba565b805460010190554260a01b8282161761429184610e93565b5561420d565b506015548411156141c6565b6142ab613a08565b6141ba565b919060408382031261000e5782516001600160401b03939084811161000e57826142db91830161304e565b936020918281015191821161000e57019180601f8401121561000e578251614302816123a3565b936143106040519586610fc7565b818552838086019260051b82010192831161000e578301905b828210614337575050505090565b81518152908301908301614329565b60026060610ff79361ffff8151168454908061ffff19831617865562010000600160b01b03602084015160101b169160018060b01b03191617178455604081015160018501550151151591019060ff801983541691151516179055565b60409061098393928152816020820152019061094d565b9190600080516020614bc283398151915261ffff61440660149385516143e8602080890192890101826142b0565b960151966143f68789614515565b8751811061442157505050613cdb565b93613e2d60405192839260018060a01b031697169482613cfb565b611945600080516020614c228339815191529383519020916040519061444682610f91565b8c891682526001600160a01b038c16602083015261192b565b1561446657565b60405162461bcd60e51b81526020600482015260116024820152701b9bc818dc99591a5d1cc81cdd1bdc9959607a1b6044820152606490fd5b156144a657565b60405162461bcd60e51b815260206004820152602960248201527f6e6f7420656e6f7567682067617320746f2070726f6365737320637265646974604482015268103a3930b739b332b960b91b6064820152608490fd5b600190600019811461450d570190565b6117636131ce565b60009291835b81518110156145ad575a600854116145ad576145378183613c97565b5190614542826136a3565b158015614583575b1561457f578161455c61456f936136a3565b6145745761456a9085614645565b6144fd565b61451b565b61456a908530614196565b8580fd5b5061458d826136a3565b801561454a57506001600160a01b036145a5836135eb565b16301461454a565b93505050565b9291905b8151811015614640575a60085411614640576145d38183613c97565b51906145de826136a3565b158015614616575b1561000e57816145f8614606936136a3565b61460b5761456a9086614645565b6145b7565b61456a908630614196565b50614620826136a3565b80156145e657506001600160a01b03614638836135eb565b1630146145e6565b925050565b60165482116146d857601454821015806146cc575b6146bb576001600160a01b03811690614682904260a01b831761467c85610e93565b556135ba565b80546001600160401b0101905580156146ab576000600080516020614c028339815191528180a4565b622e076360e81b60005260046000fd5b630b91e58760e41b60005260046000fd5b5060155482111561465a565b6305033e0360e41b60005260046000fd5b6020909392919361ffff60408201951681520152565b60408051919082016001600160401b03811183821017614735575b60405260018252602082016020368237825115613cab575290565b61473d610f5a565b61471a565b1561474957565b60405162461bcd60e51b815260206004820152602260248201527f43616c6c6572206973206e6f742062656e6566696369617279206f72206f776e60448201526132b960f11b6064820152608490fd5b903590601e198136030182121561000e57018035906001600160401b03821161000e5760200191813603831361000e57565b91906001600160401b0381116148a9575b6147f0816147eb601c5461112a565b61315a565b6000601f821160011461482a5781929360009261481f575b50508160011b916000199060031b1c191617601c55565b013590503880614808565b601c600052601f198216937f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21191805b8681106148915750836001959610614877575b505050811b01601c55565b0135600019600384901b60f8161c1916905538808061486c565b90926020600181928686013581550194019101614859565b6148b1610f5a565b6147dc565b6148bf816136a3565b1561000e5760ff601d5460101c16614a4057604051906148e282611a6f816111e9565b6000908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8181811015614a32575b506904ee2d6d415b85acef8160201b905080831015614a23575b50662386f26fc1000080831015614a14575b506305f5e10080831015614a05575b50612710808310156149f6575b5060648210156149e6575b600a809210156149dc575b600190816021614976828701614a51565b95860101905b6149a6575b505050506149a091612a9f610983926040519485936020850190611750565b90611750565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156149d75791908261497c565b614981565b9160010191614965565b919060646002910491019161495a565b6004919392049101913861494f565b60089193920491019138614942565b60109193920491019138614933565b60209193920491019138614921565b604094500491503880614907565b506040516109838161134981611164565b90614a5b82610ff9565b614a686040519182610fc7565b8281528092614a79601f1991610ff9565b0190602036910137565b9190600c54908015614b25576001936001600160a01b0381169190614ab8904260a01b83881460e11b17841761467c86610e93565b80546001600160401b0183020190558115614b18575b8201919380805b614ae4575b505050600c559050565b15614b07575b600081868483600080516020614c028339815191528180a4614ad5565b80940193828503614aea5780614ada565b614b20613a4f565b614ace565b63b562e8dd60e01b60005260046000fd5b81939293614b45575b50501490565b60059291831b8101915b8135808211851b918252602080921852604060002091019282841015614b76579290614b4f565b509150503880614b3f56fe8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc15b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d9902658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad7fa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470daba264697066735822122005c5232aa498048a1772b7a2e0a3785d78b2c25f85ee7e307df418b028e39e9f64736f6c6343000811003300000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd70000000000000000000000000000000000000000000000000000000000000033000000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e1b787a5d677a5906acccf0b4f387b8bb1b5c3000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070e1b787a5d677a5906acccf0b4f387b8bb1b5c3000000000000000000000000000000000000000000000000000000000000000f546573744f6d6e69466c6f776572730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f546573744f6d6e69466c6f776572730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001168747470733a2f2f746573742e636f6d2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001168747470733a2f2f746573742e636f6d2f000000000000000000000000000000