0 txs
0 calls
constructor
constructor(string uri_)
functions
approvalNonces
viewfunction approvalNonces(address) view returns (uint256)
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
excludeArtifacts
viewfunction excludeArtifacts() view returns (string[] excludedArtifacts_)
excludeContracts
viewfunction excludeContracts() view returns (address[] excludedContracts_)
excludeSenders
viewfunction excludeSenders() view returns (address[] excludedSenders_)
IS_TEST
viewfunction IS_TEST() view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
onERC1155BatchReceived
purefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) pure returns (bytes4)
onERC1155Received
viewfunction onERC1155Received(address, address, uint256, uint256, bytes) view returns (bytes4)
onERC721Received
viewfunction onERC721Received(address, address, uint256, bytes) view returns (bytes4)
owner
viewfunction owner() view returns (address)
permitFuse
viewfunction permitFuse() view returns (uint256)
SETPERMITFORALL_TYPEHASH
viewfunction SETPERMITFORALL_TYPEHASH() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
targetArtifacts
viewfunction targetArtifacts() view returns (string[] targetedArtifacts_)
targetArtifactSelectors
viewfunction targetArtifactSelectors() view returns (tuple[] targetedArtifactSelectors_)
targetContracts
viewfunction targetContracts() view returns (address[] targetedContracts_)
targetSelectors
viewfunction targetSelectors() view returns (tuple[] targetedSelectors_)
targetSenders
viewfunction targetSenders() view returns (address[] targetedSenders_)
tokensToPrimitives
viewfunction tokensToPrimitives(uint256) view returns (address)
unwrapFeeDivisor
viewfunction unwrapFeeDivisor() view returns (uint256)
uri
viewfunction uri(uint256) view returns (string)
breakPermitFuse
nonpayablefunction breakPermitFuse()
changeUnwrapFee
nonpayablefunction changeUnwrapFee(uint256 nextUnwrapFeeDivisor)
doInteraction
payablefunction doInteraction(tuple interaction) payable returns (uint256 burnId, uint256 burnAmount, uint256 mintId, uint256 mintAmount)
doMultipleInteractions
payablefunction doMultipleInteractions(tuple[] interactions, uint256[] ids) payable returns (uint256[] burnIds, uint256[] burnAmounts, uint256[] mintIds, uint256[] mintAmounts)
failed
nonpayablefunction failed() returns (bool)
forwardedDoInteraction
payablefunction forwardedDoInteraction(tuple interaction, address userAddress) payable returns (uint256 burnId, uint256 burnAmount, uint256 mintId, uint256 mintAmount)
forwardedDoMultipleInteractions
payablefunction forwardedDoMultipleInteractions(tuple[] interactions, uint256[] ids, address userAddress) payable returns (uint256[] burnIds, uint256[] burnAmounts, uint256[] mintIds, uint256[] mintAmounts)
registerNewTokens
nonpayablefunction registerNewTokens(uint256 currentNumberOfTokens, uint256 numberOfAdditionalTokens) returns (uint256[] oceanIds)
renounceOwnership
nonpayablefunction renounceOwnership()
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setPermitForAll
nonpayablefunction setPermitForAll(address owner, address operator, bool approved, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
ChangeUnwrapFee
event ChangeUnwrapFee(uint256 indexed oldFee, uint256 indexed newFee, address sender)
ComputeInputAmount
event ComputeInputAmount(address primitive, uint256 indexed inputToken, uint256 indexed outputToken, uint256 indexed inputAmount, uint256 outputAmount, address user)
ComputeOutputAmount
event ComputeOutputAmount(address primitive, uint256 indexed inputToken, uint256 indexed outputToken, uint256 indexed inputAmount, uint256 outputAmount, address user)
Erc1155Unwrap
event Erc1155Unwrap(address indexed erc1155Token, uint256 erc1155Id, uint256 amount, uint256 feeCharged, address indexed user, uint256 indexed oceanId)
Erc1155Wrap
event Erc1155Wrap(address indexed erc1155Token, uint256 erc1155Id, uint256 amount, address indexed user, uint256 indexed oceanId)
Erc20Unwrap
event Erc20Unwrap(address indexed erc20Token, uint256 transferredAmount, uint256 unwrappedAmount, uint256 feeCharged, address indexed user, uint256 indexed oceanId)
Erc20Wrap
event Erc20Wrap(address indexed erc20Token, uint256 transferredAmount, uint256 wrappedAmount, uint256 dust, address indexed user, uint256 indexed oceanId)
Erc721Unwrap
event Erc721Unwrap(address indexed erc721Token, uint256 erc721Id, address indexed user, uint256 indexed oceanId)
Erc721Wrap
event Erc721Wrap(address indexed erc721Token, uint256 erc721id, address indexed user, uint256 indexed oceanId)
EtherUnwrap
event EtherUnwrap(uint256 indexed amount, uint256 indexed feeCharged, address indexed user)
EtherWrap
event EtherWrap(uint256 amount, address indexed user)
ForwardedOceanTransaction
event ForwardedOceanTransaction(address indexed forwarder, address indexed user, uint256 numberOfInteractions)
log_address
event log_address(address)
log_array
event log_array(address[] val)
log_array
event log_array(int256[] val)
log_array
event log_array(uint256[] val)
log_bytes
event log_bytes(bytes)
log_bytes32
event log_bytes32(bytes32)
log_int
event log_int(int256)
log_named_address
event log_named_address(string key, address val)
log_named_array
event log_named_array(string key, address[] val)
log_named_array
event log_named_array(string key, int256[] val)
log_named_array
event log_named_array(string key, uint256[] val)
log_named_bytes
event log_named_bytes(string key, bytes val)
log_named_bytes32
event log_named_bytes32(string key, bytes32 val)
log_named_decimal_int
event log_named_decimal_int(string key, int256 val, uint256 decimals)
log_named_decimal_uint
event log_named_decimal_uint(string key, uint256 val, uint256 decimals)
log_named_int
event log_named_int(string key, int256 val)
log_named_string
event log_named_string(string key, string val)
log_named_uint
event log_named_uint(string key, uint256 val)
log_string
event log_string(string)
log_uint
event log_uint(uint256)
log
event log(string)
logs
event logs(bytes)
NewTokensRegistered
event NewTokensRegistered(address indexed creator, uint256[] tokens, uint256[] nonces)
OceanTransaction
event OceanTransaction(address indexed user, uint256 indexed numberOfInteractions)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PermitFuseBroken
event PermitFuseBroken(address indexed breakerAddress)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
URI
event URI(string value, uint256 indexed id)
errors
CAST_AMOUNT_EXCEEDED
error CAST_AMOUNT_EXCEEDED()
DELTA_AMOUNT_IS_NEGATIVE
error DELTA_AMOUNT_IS_NEGATIVE()
DELTA_AMOUNT_IS_POSITIVE
error DELTA_AMOUNT_IS_POSITIVE()
FORWARDER_NOT_APPROVED
error FORWARDER_NOT_APPROVED()
INVALID_ERC721_AMOUNT
error INVALID_ERC721_AMOUNT()
MISSING_TOKEN_ID
error MISSING_TOKEN_ID()
NO_DECIMAL_METHOD
error NO_DECIMAL_METHOD()
NO_RECURSIVE_UNWRAPS
error NO_RECURSIVE_UNWRAPS()
NO_RECURSIVE_WRAPS
error NO_RECURSIVE_WRAPS()
creation bytecode
0x60e06040818152346200044f5762005317803803809162000021828662000470565b8439820160209081848203126200044f5783516001600160401b03948582116200044f5701601f918083830112156200044f5781518681116200033557855192601f199262000077838701851688018662000470565b8285528683830101116200044f57859060005b8381106200043a57505060009184010152845192620000a98462000454565b60148452848401937f7368656c6c2d70726f746f636f6c2d6f6365616e00000000000000000000000085528651620000e18162000454565b60019586825287820190603160f81b82528951608081018181108d821117620003355771766572696679696e67436f6e74726163742960701b60606052937f76657273696f6e2c75696e7432353620636861696e49642c61646472657373208f948f9086528683528201947f454950373132446f6d61696e28737472696e67206e616d652c737472696e6720865282015201522093519020915190208851918883019384528983015260608201524660808201523060a082015260a0815260c081018181108a821117620003355788525190206080527f7aea62eb64c80d70d6f7fceb0f80c4901e6585fbeca774ca10ae898d1af3af6760a0528354336001600160a01b0319821681178655906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3836002558251928784116200033557600754928584811c941680156200042f575b8785101462000419578383869511620003be575b50869284116001146200035757506000926200034b575b5050600019600383901b1c191690821b176007555b806004558060ff1981816008541617600855600c541617600c556000196023558060245560255581519081019170457468657200000000000000000000000083526000603483015260348252606082019382851090851117620003355783905251902060c052614e82908162000495823960805181818161159001526117e1015260a0518181816114f50152611ec1015260c0518181816128c60152818161336f015281816143250152818161439501526144aa0152f35b634e487b7160e01b600052604160045260246000fd5b01519050388062000268565b859492919216916007600052866000209260005b88828210620003a757505084116200038d575b505050811b016007556200027d565b015160001960f88460031b161c191690553880806200037e565b83850151865588979095019493840193016200036b565b90919293506007600052866000208480870160051c8201928988106200040f575b9187968992969594930160051c01915b828110620003ff57505062000251565b60008155879650889101620003ef565b92508192620003df565b634e487b7160e01b600052602260045260246000fd5b93607f16936200023d565b8181018301518682018401528792016200008a565b600080fd5b604081019081106001600160401b038211176200033557604052565b601f909101601f19168101906001600160401b03821190821017620003355760405256fe608060405260048036101561001357600080fd5b60003560e01c908162fdd58e14611fe757816301ffc9a714611ee457816306bea54514611ea95781630e89341c14611d7e578163150b7a0214611d305781631ed7831c14611cac578163215835b314611bbd578163286450f114611b365781632eb2c2d6146118045781633644e515146117c95781633e5e3c23146117455781633f7286f4146116c157816343d8e5061461167c5781634b7ac8d41461146d5781634e1273f41461130557816366d9a9a014610ff55781636f6e25c714610fd8578163715018a614610f65578163739653ba14610f0357816385226c8114610e745781638da5cb5b14610e4d5781638fec800914610e2f578163916a17c614610aeb578163a22cb46514610aba578163b369799e146109d6578163b5508aa914610947578163ba414fa614610922578163bc197c81146108a0578163c7d15f841461086d578163d44f70b4146107e5578163e20c9f7114610751578163e3638399146106fb578163e4288c07146106c1578163e985e9c51461066a578163f23a6e61146105f2578163f242432a146102d9578163f2fde38b146101e8575063fa7626d4146101c057600080fd5b346101e35760006003193601126101e357602060ff600854166040519015158152f35b600080fd5b346101e35760206003193601126101e357610201612016565b61020961277c565b6001600160a01b0380911691821561026f5750600154827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60849060206040519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b346101e35760a06003193601126101e3576102f2612016565b6102fa61202c565b90604435906064359060843567ffffffffffffffff81116101e35761032290369087016122f5565b9161032b6148a9565b6001600160a01b038092169133831480156105c9575b61034a9061485e565b8516610357811515614964565b8460005260209560058752604060002084600052875282604060002054610380828210156149af565b87600052600589526040600020866000528952036040600020558560005260058752604060002082600052875260406000206103bd8482546135ec565b90558184604051888152858a8201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a43b6103ff575b6001600255005b86946000879461045c604051978896879586947ff23a6e61000000000000000000000000000000000000000000000000000000009c8d8752339087015260248601526044850152606484015260a0608484015260a4830190612065565b03925af16000918161059a575b5061051e57505060019061047b614df5565b6308c379a0146104ea575b5061049957505b808080808080806103f8565b6104e69060405191829162461bcd60e51b8352820160609060208152601360208201527f6e6f6e2d4552433131353552656365697665720000000000000000000000000060408201520190565b0390fd5b6104f2614e13565b806104fd5750610486565b6104e6849160405193849362461bcd60e51b85528401526024830190612065565b7fffffffff000000000000000000000000000000000000000000000000000000001603905061054d575061048d565b6104e69060405191829162461bcd60e51b8352820160609060208152601860208201527f4552433131353552656365697665722072656a6563746564000000000000000060408201520190565b6105bb919250843d86116105c2575b6105b38183612204565b810190614dbd565b9085610469565b503d6105a9565b5082600052600660205260406000203360005260205261034a60ff604060002054169050610341565b346101e35760a06003193601126101e35761060b612016565b5061061461202c565b506084359067ffffffffffffffff82116101e357610634913691016120a8565b5050602061064061284a565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101e35760406003193601126101e357610683612016565b61068b61202c565b906001600160a01b03809116600052600660205260406000209116600052602052602060ff604060002054166040519015158152f35b346101e35760206003193601126101e3576001600160a01b036106e2612016565b1660005260006020526020604060002054604051908152f35b346101e35760206003193601126101e3573561071561277c565b806107d0116101e357806023547f418da9cf3f702319d14530681ec7bf242aeb71f4959c849ad3de431599b43cc46020604051338152a3602355005b346101e35760006003193601126101e357604051806014549182815260208091019260146000527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec916000905b8282106107c5576107c1856107b581890382612204565b604051918291826120d6565b0390f35b83546001600160a01b03168652948501946001938401939091019061079e565b60406003193601126101e35767ffffffffffffffff9080358281116101e35761081190369083016124aa565b6024359384116101e35761082e61085d936107c1953691016124db565b9180337f1ae805a3773324a90592b8a87b99151f93a76c32229b924c6a8199c2acda49f9600080a333936129c8565b906040949294519485948561250c565b346101e35760206003193601126101e35735600052600360205260206001600160a01b0360406000205416604051908152f35b346101e35760a06003193601126101e3576108b9612016565b506108c261202c565b5067ffffffffffffffff906044358281116101e3576108e490369083016124db565b50506064358281116101e3576108fd90369083016124db565b50506084359182116101e357610915913691016120a8565b5050602060405160008152f35b346101e35760006003193601126101e357602061093d61259f565b6040519015158152f35b346101e35760006003193601126101e35760185461096481612245565b6109716040519182612204565b81815260209182820160186000527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e936000915b8383106109ba57604051806107c1878261242a565b60018281926109c88961268c565b8152019601920191946109a5565b60606003193601126101e35767ffffffffffffffff81358181116101e357610a0190369084016124aa565b916024359081116101e357610a1990369085016124db565b929091604435946001600160a01b038616908187036101e35781600052600660205260406000203360005260205260ff6040600020541615610a92576107c161085d8888888888886040518381527f6eb0debd3c0f189ccf977863c81ba259fe0eb500503c3f78777771a68bf8e48960203392a36129c8565b6040517fb8e05a70000000000000000000000000000000000000000000000000000000008152fd5b346101e35760406003193601126101e357610ad3612016565b60243580151581036101e357610ae99133614cef565b005b346101e35760006003193601126101e357601b54610b0881612245565b610b156040519182612204565b8181526020810191601b6000527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1926000905b828210610b5d57604051806107c1868261233c565b604051610b698161214e565b6001600160a01b038654168152600180870160405191826020835491828152019260005260206000206000905b826007830110610da9579460019794600297948294610bfb946020995492828210610d74575b828210610d3f575b828210610d0a575b828210610cd5575b828210610ca0575b828210610c6b575b828210610c39575b5010610c0d575b500382612204565b83820152815201950191019093610b48565b7fffffffff0000000000000000000000000000000000000000000000000000000016815286018d610bf3565b838b1b7fffffffff00000000000000000000000000000000000000000000000000000000168552938a01930138610bec565b8a8192957fffffffff000000000000000000000000000000000000000000000000000000008660401b16815201940190610be4565b8a8192957fffffffff000000000000000000000000000000000000000000000000000000008660601b16815201940190610bdc565b8a8192957fffffffff000000000000000000000000000000000000000000000000000000008660801b16815201940190610bd4565b8a8192957fffffffff000000000000000000000000000000000000000000000000000000008660a01b16815201940190610bcc565b8a8192957fffffffff000000000000000000000000000000000000000000000000000000008660c01b16815201940190610bc4565b8a8192957fffffffff000000000000000000000000000000000000000000000000000000008660e01b16815201940190610bbc565b938361010060089287547fffffffff0000000000000000000000000000000000000000000000000000000090818160e01b16835260c08282821b16602085015260a08383821b1660408601526080848460608282851b16818a01521b1690860152838360401b1690850152828260201b16908401521660e0820152019501910190610b96565b346101e35760006003193601126101e3576020602354604051908152f35b346101e35760006003193601126101e35760206001600160a01b0360015416604051908152f35b346101e35760006003193601126101e357601954610e9181612245565b610e9e6040519182612204565b81815260209182820160196000527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695936000915b838310610ee757604051806107c1878261242a565b6001828192610ef58961268c565b815201960192019194610ed2565b60a06003193601126101e3576001337f1ae805a3773324a90592b8a87b99151f93a76c32229b924c6a8199c2acda49f9600080a36107c1610f43336128b8565b6040805194855260208501939093529183015260608201529081906080820190565b346101e35760006003193601126101e357610f7e61277c565b60006001600160a01b036001547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101e35760006003193601126101e35760209054604051908152f35b346101e35760006003193601126101e357601a5461101281612245565b61101f6040519182612204565b8181526020810191601a6000527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e926000905b82821061106757604051806107c1868261233c565b6040516110738161214e565b6001600160a01b038654168152600186016040519081602082549182815201916000526020600020906000915b81600784011061127e578460019794600297946020979461110294549181811061124a575b818110611216575b8181106111e2575b8181106111ae575b81811061117a575b818110611146575b818110611114575b10610c0d57500382612204565b83820152815201950191019093611052565b828a1b7fffffffff00000000000000000000000000000000000000000000000000000000168452928901928b016110f5565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016110ed565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016110e5565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016110dd565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016110d5565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560c01b1681520193016110cd565b92898c917fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681520193016110c5565b92600161010060089286547fffffffff0000000000000000000000000000000000000000000000000000000090818160e01b16835260c08282821b16602085015260a08383821b1660408601526080848460608282851b16818a01521b1690860152838360401b1690850152828260201b16908401521660e08201520194019201916110a0565b346101e35760406003193601126101e35780359067ffffffffffffffff908183116101e357366023840112156101e357828101359161134383612245565b936113516040519586612204565b83855260209360248587019160051b830101913683116101e357602401905b82821061144e575050506024359081116101e357611391903690830161225d565b90835182510361140b57506113a6835161359d565b9260005b81518110156113f457806113df6001600160a01b036113cc6113ef94866129b4565b51166113d883876129b4565b51906147ed565b6113e982886129b4565b526127d4565b6113aa565b5050506107c160405192828493845283019061211a565b606490836040519162461bcd60e51b8352820152601d60248201527f6163636f756e74732e6c656e67746820213d206964732e6c656e6774680000006044820152fd5b81356001600160a01b03811681036101e3578152908501908501611370565b346101e35760e06003193601126101e357611486612016565b9061148f61202c565b60443591821515908184036101e3576064356084359060ff82168092036101e3576001835403611638574281106101e3576001600160a01b0392838816948560005260006020526040600020928354936114e8856127d4565b90556040519360208501927f00000000000000000000000000000000000000000000000000000000000000008452886040870152878a166060870152608086015260a085015260c084015260c0835260e083019183831067ffffffffffffffff84111761162357509260009282602095608094604052825190206101226101008401937f190100000000000000000000000000000000000000000000000000000000000085527f00000000000000000000000000000000000000000000000000000000000000006101028201520152604281526115c4816121b0565b519020906040519182528482015260a435604082015260c435606082015282805260015afa15611617576000511690811515918261160d575b5050156101e357610ae992614cef565b14905084806115fd565b6040513d6000823e3d90fd5b604190634e487b7160e01b6000525260246000fd5b60648360206040519162461bcd60e51b8352820152601960248201527f5065726d6974205369676e61747572652044697361626c6564000000000000006044820152fd5b346101e35760006003193601126101e35760009061169861277c565b55337f6a48aa731704180ea30bb9c36eb6e31f04c276642647d76c25f20caaa50f8847600080a2005b346101e35760006003193601126101e357604051806016549182815260208091019260166000527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289916000905b828210611725576107c1856107b581890382612204565b83546001600160a01b03168652948501946001938401939091019061170e565b346101e35760006003193601126101e357604051806017549182815260208091019260176000527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15916000905b8282106117a9576107c1856107b581890382612204565b83546001600160a01b031686529485019460019384019390910190611792565b346101e35760006003193601126101e35760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101e35760031960a0813601126101e35761181e612016565b61182661202c565b9167ffffffffffffffff916044358381116101e357611848903690870161225d565b6064358481116101e35761185f903690880161225d565b936084359081116101e35761187790369088016122f5565b926118806148a9565b6001600160a01b03809316923384148015611b0d575b61189f9061485e565b8251865103611ac9578616936118b6851515614964565b60005b835181101561194c57806118d061194792866129b4565b516118db828a6129b4565b519080600052600560209181835260406000208a600052835283604060002054611907828210156149af565b8260005283855260406000208c6000528552036040600020556000528152604060002090896000525261194060406000209182546135ec565b90556127d4565b6118b9565b509094929584876040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb3391806119858a8a836148fc565b0390a43b611994576001600255005b60405194859384937fbc197c810000000000000000000000000000000000000000000000000000000098898652338b87015260248601526044850160a0905260a485016119e09161211a565b828582030160648601526119f39161211a565b90838203016084840152611a0691612065565b03815a602094600091f160009181611aa9575b50611a7c5750506001611a2a614df5565b6308c379a014611a46575b6104995750808080808080806103f8565b611a4e614e13565b80611a595750611a35565b826104e660209260405193849362461bcd60e51b85528401526024830190612065565b7fffffffff00000000000000000000000000000000000000000000000000000000160361054d575061048d565b611ac291925060203d81116105c2576105b38183612204565b9084611a19565b60648860206040519162461bcd60e51b8352820152601c60248201527f6964732e6c656e67746820213d20616d6f756e74732e6c656e677468000000006044820152fd5b5083600052600660205260406000203360005260205261189f60ff604060002054169050611896565b600319360160c081126101e35760a0136101e35760a435906001600160a01b038216908183036101e35781600052600660205260406000203360005260205260ff6040600020541615610a92576107c1610f438484604051600181527f6eb0debd3c0f189ccf977863c81ba259fe0eb500503c3f78777771a68bf8e48960203392a36128b8565b346101e35760406003193601126101e35735602435611bdb8161359d565b90611be58161359d565b9260005b828110611c3d576107c184867f69f4cd026fceaa224d78e03ab43e6c20f9d54eae52f88e23573a5ac5bc9c4cd760405180611c26339486836148fc565b0390a260405191829160208352602083019061211a565b80611c4b611ca792846135ec565b611c558133614921565b90611c6083896129b4565b5280611c6c83886129b4565b5260005260036020526040600020337fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556127d4565b611be9565b346101e35760006003193601126101e357604051806015549182815260208091019260156000527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475916000905b828210611d10576107c1856107b581890382612204565b83546001600160a01b031686529485019460019384019390910190611cf9565b346101e35760806003193601126101e357611d49612016565b50611d5261202c565b506064359067ffffffffffffffff82116101e357611d72913691016120a8565b50506020610640612817565b346101e3576020806003193601126101e35760405191600060075460019080821c93828216908115611e9f575b8686108214611e8a57508487528693929186908215611e4c575050600114611def575b50611ddb92500383612204565b6107c1604051928284938452830190612065565b84915060076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688906000915b858310611e34575050611ddb935082010185611dce565b80548389018501528794508693909201918101611e1d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152611ddb95151560051b8501019250879150611dce9050565b602290634e487b7160e01b6000525260246000fd5b94607f1694611dab565b346101e35760006003193601126101e35760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101e35760206003193601126101e357357fffffffff0000000000000000000000000000000000000000000000000000000081168091036101e357807f4e2312e00000000000000000000000000000000000000000000000000000000060209214908115611f59575b506040519015158152f35b7fd9b67a2600000000000000000000000000000000000000000000000000000000811491508115611fbd575b8115611f93575b5082611f4e565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611f8c565b7f0e89341c0000000000000000000000000000000000000000000000000000000081149150611f85565b346101e35760406003193601126101e357602061200e612005612016565b602435906147ed565b604051908152f35b600435906001600160a01b03821682036101e357565b602435906001600160a01b03821682036101e357565b60005b8381106120555750506000910152565b8181015183820152602001612045565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936120a181518092818752878088019101612042565b0116010190565b9181601f840112156101e35782359167ffffffffffffffff83116101e357602083818601950101116101e357565b6020908160408183019282815285518094520193019160005b8281106120fd575050505090565b83516001600160a01b0316855293810193928101926001016120ef565b90815180825260208080930193019160005b82811061213a575050505090565b83518552938101939281019260010161212c565b6040810190811067ffffffffffffffff82111761216a57604052565b634e487b7160e01b600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761216a57604052565b67ffffffffffffffff811161216a57604052565b6080810190811067ffffffffffffffff82111761216a57604052565b6060810190811067ffffffffffffffff82111761216a57604052565b6020810190811067ffffffffffffffff82111761216a57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761216a57604052565b67ffffffffffffffff811161216a5760051b60200190565b81601f820112156101e35780359161227483612245565b926122826040519485612204565b808452602092838086019260051b8201019283116101e3578301905b8282106122ac575050505090565b8135815290830190830161229e565b67ffffffffffffffff811161216a57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156101e35780359061230c826122bb565b9261231a6040519485612204565b828452602083830101116101e357816000926020809301838601378301015290565b602080820190808352835180925260409283810182858560051b840101960194600080935b86851061237357505050505050505090565b9091929394887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08383999a9b03018652895182606081888501936001600160a01b038151168652015193888382015284518094520192019085905b8082106123ef5750505090806001929a019501950193969594929190612361565b919380600192947fffffffff0000000000000000000000000000000000000000000000000000000087511681520194019201899392916123ce565b602080820190808352835180925260408301928160408460051b8301019501936000915b84831061245e5750505050505090565b909192939495848061249a837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a51612065565b980193019301919493929061244e565b9181601f840112156101e35782359167ffffffffffffffff83116101e35760208085019460a085020101116101e357565b9181601f840112156101e35782359167ffffffffffffffff83116101e3576020808501948460051b0101116101e357565b92612538612554959361252a6125469460808852608088019061211a565b90868203602088015261211a565b90848203604086015261211a565b91606081840391015261211a565b90565b3d15612582573d90612568826122bb565b916125766040519384612204565b82523d6000602084013e565b606090565b908160209103126101e3575180151581036101e35790565b60ff60085460081c166000146125bb5760ff60085460081c1690565b600080737109709ecfa91a80626ff3989d68f67f5b1dd12d803b6125de57505090565b60405182602082018381527f6661696c6564000000000000000000000000000000000000000000000000000060408401526040835261261c836121cc565b61266d6024604051809361265d60208301977f667f9d7000000000000000000000000000000000000000000000000000000000895251809285850190612042565b8101036004810184520182612204565b51925af15061255461267d612557565b60208082518301019101612587565b90604051906000835490600182811c90808416968715612772575b602094858410891461275e578798848997989952908160001461271d57506001146126de575b5050506126dc92500383612204565b565b600090815285812095935091905b8183106127055750506126dc93508201013880806126cd565b855488840185015294850194879450918301916126ec565b9150506126dc9593507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013880806126cd565b602485634e487b7160e01b81526022600452fd5b91607f16916126a7565b6001600160a01b0360015416330361279057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146128015760010190565b634e487b7160e01b600052601160045260246000fd5b602554600203612845577f150b7a020000000000000000000000000000000000000000000000000000000090565b600090565b602454600203612845577ff23a6e610000000000000000000000000000000000000000000000000000000090565b60031960a09101126101e3576040519061289182612180565b60043582526024356020830152604435604083015260643560608301526084356080830152565b3415612949576000916000917f00000000000000000000000000000000000000000000000000000000000000009134916040518381527f55f83f01c0664bd25aad3d627119249b43acc06873e584be1db2ddd46ca3bdeb60206001600160a01b03841692a25b84612939575b82848161293057505050565b6126dc92614a62565b612944858783614c6c565b612924565b906129858261295f61295a36612878565b6143bb565b61297261296b36612878565b82846143d7565b906064359261298036612878565b6136a0565b9294919390929161291e565b80511561299e5760200190565b634e487b7160e01b600052603260045260246000fd5b805182101561299e5760209160051b010190565b909493926129d581612245565b906040936129e585519384612204565b8183527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612a1283612245565b0160005b81811061345457505060005b82811061341a575050503461333d575b825195612a3e87612180565b60008752602096600088820152600085820152606093600085830152600060808093015260005b8381106130d957505050508183518781526008888201527f6473646473646473000000000000000000000000000000000000000000000000858201527f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50918291a1600093600095869487965b8551881015612b3c578a612ae589886129b4565b5101516000811315612b0a5750612afe612b04916127d4565b976127d4565b96612ad1565b9798909760001315612b2857612b22612b04916127d4565b986127d4565b9795612b36612b04916127d4565b966127d4565b95612b6491949a929750612b5c90999399612b578a896135ec565b6135ec565b8551146135f9565b612b76612b708661359d565b9561359d565b95612b89612b838961359d565b9861359d565b9260009a8b958c5b8d89511115612c4d5785612ba58f8b6129b4565b5101516000811315612bee57612bbb8f8b6129b4565b5151612bc7838d6129b4565b52612bd2828d6129b4565b526001810180911161280157612be8909d6127d4565b9c612b91565b8c919e918a60008312612c08575b505050612be8906127d4565b90612c268b612c1e86612c2c96959e979e6129b4565b5151926129b4565b52613616565b612c3682896129b4565b52600181018091116128015796612be88c8a612bfc565b9096919750612c6f92989a94959c509a929a8a511490816130ce575b506135f9565b8998829a888a80519160018381809514600014612e31575050612c9e612c97612ca693612991565b5191612991565b519085614a62565b8451818103612cfb57505090612cea91612ce3612c977f647364647777657777657364647300000000000000000000000000000000000096612991565b5191614c6c565b600e815193808552840152820152a1565b90809495939111612d32575b505050507f647364647777657777657364647300000000000000000000000000000000000090612cea565b6001600160a01b031692612d478415156135f9565b612d5483518351146135f9565b6000815b612dc3575b5050916000917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb612db786957f647364647777657777657364647300000000000000000000000000000000000097519182913395836148fc565b0390a490388080612d07565b8351811015612e2c5780612dda612e2692866129b4565b51612de582866129b4565b5190806000526005808b5289600020896000528b52896000205491612e0c84841015614c21565b6000528a5288600020886000528a520387600020556127d4565b81612d58565b612d5d565b11612e3e575b5050612ca6565b876001600160a01b03861691612e558315156135f9565b612e6284518251146135f9565b846000815b613075575b505082600089517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb339180612ea2878b836148fc565b0390a4875192612eb1846121e8565b60008452873b612ec4575b505050612e37565b612f3c9360008a51809681958294612f2d612f1a7fbc197c81000000000000000000000000000000000000000000000000000000009c8d875233600488015287602488015260a0604488015260a487019061211a565b600319938487830301606488015261211a565b91848303016084850152612065565b03925af160009181613056575b50612feb57505080612f59614df5565b6308c379a014612fb7575b612f73575b3880878180612ebc565b835162461bcd60e51b815260206004820152601360248201527f6e6f6e2d455243313135355265636569766572000000000000000000000000006044820152606490fd5b612fbf614e13565b80612fca5750612f64565b876104e6875192839262461bcd60e51b845260048401526024830190612065565b7fffffffff000000000000000000000000000000000000000000000000000000001614612f6957835162461bcd60e51b815260206004820152601860248201527f4552433131353552656365697665722072656a656374656400000000000000006044820152606490fd5b61306e919250893d8b116105c2576105b38183612204565b9038612f49565b90919285518210156130c65750806130906130bc92856129b4565b5161309b82886129b4565b5160005260058d528a600020866000528d526119408b6000209182546135ec565b908a929181612e67565b929190612e6c565b905083511438612c69565b60a090818102830191823603126101e357877f64736465653233333232333233323332333233333233323364736464730000008c896131f28d829786519061312082612180565b80358252858101358683015287810135888301528b8583019186810135835201358c8301528d61314f836143bb565b91819361315d8685856143d7565b94859151927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8414600014613334576131969350613478565b935b8a5189815260108a8201527f64736465323333323332336473646473000000000000000000000000000000008c8201527f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50988991a16136a0565b98929491959096601d815193808552840152820152a1816132ac575b505082613221575b506001915001612a65565b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11156132835761325d6132578d9289613643565b886129b4565b510191825160008282019283129112908015821691151617612801576001925238613216565b600489517f42b51b60000000000000000000000000000000000000000000000000000000008152fd5b817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111561330b576132e86132e28f928b613643565b8a6129b4565b51018051600083820393128184128116918413901516176128015752388061320e565b60048b517f42b51b60000000000000000000000000000000000000000000000000000000008152fd5b50505093613198565b347f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11156133f157602061339a6133947f000000000000000000000000000000000000000000000000000000000000000084613643565b836129b4565b51018051903482019160003484129112908015821691151617612801575282513481527f55f83f01c0664bd25aad3d627119249b43acc06873e584be1db2ddd46ca3bdeb60206001600160a01b03871692a2612a32565b600483517f42b51b60000000000000000000000000000000000000000000000000000000008152fd5b60019086516134288161214e565b8160051b84013581526000602082015261344282876129b4565b5261344d81866129b4565b5001612a22565b60209087516134628161214e565b6000815282600081830152828801015201612a16565b9190916009831015806135585760018414908115613590575b811561357f575b811561356e575b8115613546575b5060209350156134fb576134bd6134c39282613643565b906129b4565b510151600081126134d15790565b60046040517fb11f012b000000000000000000000000000000000000000000000000000000008152fd5b6134bd6135089282613643565b5101516000811361351c5761255490613616565b60046040517fa91f3c8d000000000000000000000000000000000000000000000000000000008152fd5b905061355857600760209314386134a6565b634e487b7160e01b600052602160045260246000fd5b80915061355857600884149061349f565b809150613558576005841490613498565b5050600383146000613491565b906135a782612245565b6135b46040519182612204565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06135e28294612245565b0190602036910137565b9190820180921161280157565b1561360057565b634e487b7160e01b600052600160045260246000fd5b7f800000000000000000000000000000000000000000000000000000000000000081146128015760000390565b9060005b8251811015613676578161365b82856129b4565b5151146136705761366b906127d4565b613647565b91505090565b60046040517fe6e53d7f000000000000000000000000000000000000000000000000000000008152fd5b93909592959491946009811015613558576007810361385857506137358682966020608060408901519801516136d78685856146bd565b604051809581927f3fc20d4f00000000000000000000000000000000000000000000000000000000835289898d896004870191936080936001600160a01b039297969560a08501988552602085015260408401521660608201520152565b038160006001600160a01b0386165af19485156116175787936000966137f7575b50816137d887926137a27fc6baad430667a9b3f12a9f115e0af95c8538e5e2595e248f2d068f6c93c6101e958860005260036020526001600160a01b0380604060002054169116141590565b806137ee575b6137de575b604051938493849193929060409160608401956001600160a01b038093168552602085015216910152565b0390a490565b6137e9848885614c6c565b6137ad565b508315156137a8565b919294959093506020823d8211613850575b8161381660209383612204565b8101031261384d575051939286929091907fc6baad430667a9b3f12a9f115e0af95c8538e5e2595e248f2d068f6c93c6101e613756565b80fd5b3d9150613809565b92949392909190600681036139db57506020830151958281956020838a6139096080869a01516138a2868560005260036020526001600160a01b0380604060002054169116141590565b806139d2575b6139c2575b8860405197889586957fe92ebd3a0000000000000000000000000000000000000000000000000000000087526004870191936080936001600160a01b039297969560a08501988552602085015260408401521660608201520152565b038160006001600160a01b0386165af1938415611617578992600095613964575b50948161395e86976137ad88877fff21d0dd1bae0672a5771fb6668afecf9485c8e6e82a7d2f1ee58a96277c630e976146bd565b0390a492565b9192509492936020823d82116139ba575b8161398260209383612204565b8101031261384d57505191939192918891907fff21d0dd1bae0672a5771fb6668afecf9485c8e6e82a7d2f1ee58a96277c630e61392a565b3d9150613975565b6139cd878588614c6c565b6138ad565b508615156138a8565b9195939092909180613d1857505060009360009384819488946001600160a01b03809116916040519a8b947f313ce567000000000000000000000000000000000000000000000000000000008652602060049d8e81885afa80968297613ce8575b50613a6a578c6040517f93bee3e1000000000000000000000000000000000000000000000000000000008152fd5b909192939495969798999a9b613a808388614735565b909190829015613cb6575060018201809211613be55760ff82981660128114600014613b7d57505091613af081613b7893613ae07fd86e46c0b98ab82d234497fd7d7e31711dfa27764034b1763f3575c521f6ff94989796915b156135f9565b613aeb8282116135f9565b6146b0565b905b613afc828a6147ce565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038516602482015230604482015260648082018a90528152613b5990613b53608482612204565b8861451f565b6040519485941697846040919493926060820195825260208201520152565b0390a4565b6012811015613c0b5760120360ff8111613bf85760ff613b9d9116614707565b91828102928184041490151715613be5575091613af081613b7893613ae07fd86e46c0b98ab82d234497fd7d7e31711dfa27764034b1763f3575c521f6ff9498979691613ada565b826011602492634e487b7160e01b835252fd5b602484601184634e487b7160e01b835252fd5b909291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0160ff8111613ca35760ff613c459116614707565b91613c508383614715565b938315613c9057505083613b7893613ae07fd86e46c0b98ab82d234497fd7d7e31711dfa27764034b1763f3575c521f6ff9498979694613af09406613ada565b906012602492634e487b7160e01b835252fd5b602483601186634e487b7160e01b835252fd5b975050507fd86e46c0b98ab82d234497fd7d7e31711dfa27764034b1763f3575c521f6ff94939291613b789190613af2565b613d0a91975060203d8111613d11575b613d028183612204565b810190614506565b9538613a3c565b503d613cf8565b6001819795979693949614600014613e8d5750508483946000946000946001600160a01b03809116916040517f313ce567000000000000000000000000000000000000000000000000000000008152602081600481875afa60009181613e6d575b50613da85760046040517f93bee3e1000000000000000000000000000000000000000000000000000000008152fd5b613b787f62a282d05dd7f7ec454ec1e3ebe4c23b911f1fedecfa6f241f4b663896e592cf93613e50613dfa613df3613de260235488614715565b95613ded87896146b0565b90614735565b90956135ec565b91613e05838b6147ce565b604051987fa9059cbb0000000000000000000000000000000000000000000000000000000060208b0152169788602482015284604482015260448152613e4a816121b0565b8761451f565b604051938493846040919493926060820195825260208201520152565b613e8691925060203d8111613d1157613d028183612204565b9038613d79565b600281979294969714600014613fa3575060018403613f795760009560008096608084979601519260026025556001600160a01b0380921692833b1561384d576040517f42842e0e0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201523060248201526044810186905290808260648183895af1908115613f6d5750917f7672c4a63cc0b66a7449c3e1051810a6f128034121aa8314de5b008254b2389f9391602093613f5e575b5060016025556040519586521693a4565b613f679061219c565b38613f4d565b604051903d90823e3d90fd5b60046040517f63e95dfe000000000000000000000000000000000000000000000000000000008152fd5b9395949360038103614076575060018603613f7957809594600094600090608082960151926001600160a01b0380921692833b1561384d576040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03831660248201526044810186905290808260648183895af1908115613f6d5750917fe67983c06675e145002b5c4392d05e59790fd0cc13fb15ed1a6201f9d78e17ef9391602093614067575b506040519586521693a4565b6140709061219c565b3861405b565b939493600481036141955750600095600080968396608084970151936001600160a01b038093169330851461416b576002602455843b1561384d576040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152306024820152604481018790526064810183905260a06084820152600060a482015290808260c481838a5af1908115613f6d575091604093917f9e8d41f891cc91b6fbf90fec18d6464e22e7d95db0113fefec8c8e6815c96084959361415c575b506001602455835196875260208701521693a4565b6141659061219c565b38614147565b60046040517f73a7f558000000000000000000000000000000000000000000000000000000008152fd5b93959493600581036142e35750809585600095600092608084970151936001600160a01b03809316933085146142b9576141d160235482614715565b916141dc83836146b0565b6141e6848a6147ce565b863b156142b5576040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616602482015260448101899052606481019190915260a06084820152600060a482015290808260c481838b5af1908115613f6d5750917f285f7151736e0529314aabab94f541d8837226ed08c744dbe86bb81c76b13b3d95949391613b78936142a6575b506040519485941697846040919493926060820195825260208201520152565b6142af9061219c565b38614286565b5080fd5b60046040517fe69dd178000000000000000000000000000000000000000000000000000000008152fd5b91949350915060081480614392575b6142fb906135f9565b92819260009260009081936001600160a01b0361434961431d60235485614715565b8094613aeb827f00000000000000000000000000000000000000000000000000000000000000006147ce565b911692808285828215614389575b839283928392f115613f6d57807fa99566a5bc143aef6dfe90cacd94612c00db3ce770f4687cccc7146a841aeb4291a4565b506108fc614357565b507f000000000000000000000000000000000000000000000000000000000000000081146142f2565b51908160001a600981101561355857916001600160a01b031690565b91909160098110158061355857811580156144f9575b1561443e575050506040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000602082019260601b1682526000603482015260348152614438816121cc565b51902090565b80613558576002821480156144ec575b8181156144dc575b81156144cc575b50156144725750506080015161255491614921565b909250613558576006820361448a5760409150015190565b6007820361449b5760209150015190565b5060086144a891146135f9565b7f000000000000000000000000000000000000000000000000000000000000000090565b905061355857600582148161445d565b9050613558576003821481614456565b505060006004821461444e565b50506000600182146143ed565b908160209103126101e3575160ff811681036101e35790565b60405161457d916001600160a01b03166145388261214e565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614577612557565b91614618565b805190828215928315614600575b505050156145965750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6146109350820181019101612587565b38828161458b565b91929015614679575081511561462c575090565b3b156146355790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561468c5750805190602001fd5b6104e69060405191829162461bcd60e51b8352602060048401526024830190612065565b9190820391821161280157565b91906146e3838260005260036020526001600160a01b0380604060002054169116141590565b806146fe575b6146f257505050565b6146fb926149fa565b50565b508115156146e9565b604d811161280157600a0a90565b811561471f570490565b634e487b7160e01b600052601260045260246000fd5b60ff1660128103614747575090600090565b8060121060001461479f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0160ff81116128015760ff6147889116614707565b908181029181830414901517156128015790600090565b60129291920360ff81116128015760ff6147b99116614707565b6147c38184614715565b92811561471f570690565b90806147d8575050565b6146fb916001600160a01b03600154166149fa565b6001600160a01b031690811561481a57600052600560205260406000209060005260205260406000205490565b606460405162461bcd60e51b815260206004820152601560248201527f62616c616e63654f6628616464726573732830292900000000000000000000006044820152fd5b1561486557565b606460405162461bcd60e51b815260206004820152601660248201527f6e6f74206f776e6572206e6f7220617070726f766564000000000000000000006044820152fd5b60028054146148b85760028055565b606460405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b90916149136125549360408452604084019061211a565b91602081840391015261211a565b90604051907fffffffffffffffffffffffffffffffffffffffff000000000000000000000000602083019360601b168352603482015260348152614438816121cc565b1561496b57565b606460405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152fd5b156149b657565b606460405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152fd5b919060009181835260056020526001600160a01b036040842094169384845260205260408320614a2b8282546135ec565b905560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a43390565b90916001600160a01b0390818316614a7b8115156135f9565b614a868286866149fa565b9460405194614a94866121e8565b600086523b614aa6575b505050505050565b6000602094614b04604051978896879586947ff23a6e61000000000000000000000000000000000000000000000000000000009c8d87521660048601528560248601526044850152606484015260a0608484015260a4830190612065565b03925af160009181614c01575b50614b955750506001614b22614df5565b6308c379a014614b82575b614b3d575b388080808080614a9e565b60405162461bcd60e51b815260206004820152601360248201527f6e6f6e2d455243313135355265636569766572000000000000000000000000006044820152606490fd5b614b8a614e13565b8061468c5750614b2d565b7fffffffff000000000000000000000000000000000000000000000000000000001614614b325760405162461bcd60e51b815260206004820152601860248201527f4552433131353552656365697665722072656a656374656400000000000000006044820152606490fd5b614c1a91925060203d81116105c2576105b38183612204565b9038614b11565b15614c2857565b606460405162461bcd60e51b815260206004820152601b60248201527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006044820152fd5b6001600160a01b031690614c818215156135f9565b7fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260009382855260056020526040908186208587526020528082872054614cca82821015614c21565b85885260056020528388208789526020520382872055815193845260208401523392a4565b6001600160a01b0391821692911690818314614d795760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000526006825260406000208560005282526040600020901515907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3565b606460405162461bcd60e51b815260206004820152601560248201527f53657420617070726f76616c20666f722073656c6600000000000000000000006044820152fd5b908160209103126101e357517fffffffff00000000000000000000000000000000000000000000000000000000811681036101e35790565b60009060033d11614e0257565b905060046000803e60005160e01c90565b600060443d106125545760405160031991823d016004833e815167ffffffffffffffff918282113d602484011117614e7157818401948551938411614e79573d85010160208487010111614e71575061255492910160200190612204565b949350505050565b509493505050505600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000