solc-0.8.36-doubleshift20 0x43506849d7c04f9138d1a2050bbf3a0c054402dd via-ir-low-runs
14652 bytes
60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610384578063095ea7b31461037f57806318160ddd1461037a5780631a8952661461037557806323b872dd146103705780632ab600451461036b5780632fc81e09146103665780633092afd51461036157806330adf81f1461035c578063313ce567146103575780633357162b1461035257806335d99f351461034d5780633644e5151461034857806338a6318314610343578063395093511461033e5780633f4ba83a1461033957806340c10f191461033457806342966c681461032f578063430239b41461032a5780634e44d9561461032557806354fd4d5014610320578063554bab3c1461031b5780635a049a70146103165780635c975abb1461031157806370a082311461030c5780637ecebe00146103075780637f2eecc3146103025780638456cb59146102fd57806388b7ab63146102f85780638a6db9c3146102f35780638da5cb5b146102ee57806395d89b41146102e95780639fd0506d146102e45780639fd5a6cf146102df578063a0cc6a68146102da578063a457c2d7146102d5578063a9059cbb146102d0578063aa20e1e4146102cb578063aa271e1a146102c6578063ad38bf22146102c1578063b2118a8d146102bc578063b7b72899146102b7578063bd102430146102b2578063cf092995146102ad578063d505accf146102a8578063d608ea64146102a3578063d91694871461029e578063dd62ed3e14610299578063e3ee160e14610294578063e5a6b10f1461028f578063e94a01021461028a578063ef55bec614610285578063f2fde38b14610280578063f9f92be41461027b5763fe575a8714610276575f80fd5b611eca565b611e60565b611d83565b611d6c565b611d1e565b611c8c565b611c23565b611b81565b611b5a565b611a09565b611991565b61194a565b611922565b6118cc565b61177c565b6116a1565b611661565b6115e4565b611590565b6114c1565b61149a565b61142d565b611405565b611342565b61131b565b6112e0565b611299565b6111e8565b6111c1565b611186565b61115f565b61113a565b6110c8565b610ff7565b610fdc565b610f30565b610eb1565b610d5e565b610bd2565b610b7b565b610b15565b610aed565b610ab8565b610a90565b6109e9565b61093d565b610916565b610888565b610826565b610756565b610631565b6105b9565b61059c565b610555565b6104d9565b90600182811c921680156103b7575b60208310146103a357565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610398565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176103f857604052565b6103c1565b604051905f826004549161041083610389565b80835292600181169081156104825750600114610436575b610434925003836103d5565b565b5060045f90815290915f51602061391c5f395f51905f525b81831061046657505090602061043492820101610428565b602091935080600191548385890101520191019091849261044e565b6020925061043494915060ff191682840152151560051b820101610428565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206104d69281815201906104a1565b90565b3461050c575f36600319011261050c576105086104f46103fd565b6040519182916020835260208301906104a1565b0390f35b5f80fd5b6001600160a01b0381160361050c57565b6084359061043482610510565b60a4359061043482610510565b60c4359061043482610510565b60e4359061043482610510565b3461050c57604036600319011261050c5761059160043561057581610510565b6024359061058b60ff60015460a01c1615611efb565b33612b1a565b602060405160018152f35b3461050c575f36600319011261050c576020600b54604051908152f35b3461050c57602036600319011261050c576004356105d681610510565b6105eb60018060a01b03600254163314611f3a565b6105f481612e37565b9060018060a01b031690815f52600960205260405f20557f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e5f80a2005b3461050c57606036600319011261050c5760043561064e81610510565b60243561065a81610510565b6044359061067060ff60015460a01c1615611efb565b61068261067c33612c26565b15611f9b565b61068e61067c84612c26565b61069a61067c82612c26565b60018060a01b0383165f52600a6020526106b73360405f20612040565b54821161070057816106d06106f3936106e89386612cf9565b6106e2336106dd86611ff5565b612040565b54612dde565b916106dd3391611ff5565b5560405160018152602090f35b60405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608490fd5b3461050c57602036600319011261050c5760043561077381610510565b61078760018060a01b035f54163314612055565b6001600160a01b031680156107ce57600e80546001600160a01b031916821790557fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a5f80a2005b60405162461bcd60e51b815260206004820152602a60248201527f526573637561626c653a206e6577207265736375657220697320746865207a65604482015269726f206164647265737360b01b6064820152608490fd5b3461050c57602036600319011261050c5760043561084381610510565b600160ff601254160361050c5761085930612e37565b80610877575b61086830613415565b6012805460ff19166002179055005b6108819130612cf9565b5f8061085f565b3461050c57602036600319011261050c576004356108a581610510565b6108ba60018060a01b03600854163314612105565b6001600160a01b03165f818152600c60209081526040808320805460ff19169055600d9091528082208290555191907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929080a260018152602090f35b3461050c575f36600319011261050c5760206040515f5160206138dc5f395f51905f528152f35b3461050c575f36600319011261050c57602060ff60065416604051908152f35b6001600160401b0381116103f857601f01601f191660200190565b9291926109848261095d565b9161099260405193846103d5565b82948184528183011161050c578281602093845f960137010152565b9080601f8301121561050c578160206104d693359101610978565b6064359060ff8216820361050c57565b6084359060ff8216820361050c57565b3461050c5761010036600319011261050c576004356001600160401b03811161050c57610a1a9036906004016109ae565b6024356001600160401b03811161050c57610a399036906004016109ae565b60443591906001600160401b03831161050c57610a5d610a8e9336906004016109ae565b610a656109c9565b610a6d610521565b90610a7661052e565b92610a7f61053b565b94610a88610548565b966125eb565b005b3461050c575f36600319011261050c576008546040516001600160a01b039091168152602090f35b3461050c575f36600319011261050c576020610ae5610ad56103fd565b4690610adf612afb565b90613437565b604051908152f35b3461050c575f36600319011261050c57600e546040516001600160a01b039091168152602090f35b3461050c57604036600319011261050c57610b6f600435610b3581610510565b610b68602435610b4d60ff60015460a01c1615611efb565b335f52600a602052610b628360405f20612040565b54612e65565b9033612b1a565b60405160018152602090f35b3461050c575f36600319011261050c57600154610ba2336001600160a01b03831614612728565b60ff60a01b19166001557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b335f80a1005b3461050c57604036600319011261050c57600435610bef81610510565b60243590610c0560ff60015460a01c1615611efb565b335f52600c602052610c1d60ff60405f20541661277f565b610c2961067c33612c26565b610c3561067c82612c26565b6001600160a01b038116918215610d0d57610cfe81610cb4815f95610c695f5160206138bc5f395f51905f529615156127d5565b610caf610c753361200e565b5491610c8383851115612833565b610c97610c9285600b54612e65565b600b55565b610ca984610ca483612e37565b612e65565b90612ebc565b612dde565b610cbd3361200e565b55604051818152859033907fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f890602090a36040519081529081906020820190565b0390a360405160018152602090f35b60405162461bcd60e51b815260206004820152602360248201527f46696174546f6b656e3a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b3461050c57602036600319011261050c57600435610d8460ff60015460a01c1615611efb565b335f52600c602052610d9c60ff60405f20541661277f565b610da861067c33612c26565b610db133612e37565b908015610e2d57610de2610ddc8284610dcd825f971015612896565b610caf610c9283600b54612dde565b33612ebc565b60405181815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590602090a260405190815233905f5160206138bc5f395f51905f5290602090a3005b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a206275726e20616d6f756e74206e6f7420677265617460448201526806572207468616e20360bc1b6064820152608490fd5b9181601f8401121561050c578235916001600160401b03831161050c576020838186019501011161050c57565b3461050c57604036600319011261050c576004356001600160401b03811161050c573660238201121561050c576004810135906001600160401b03821161050c573660248360051b8301011161050c57602435906001600160401b03821161050c57610a8e92610f276024933690600401610e84565b93909201612991565b3461050c57604036600319011261050c57600435610f4d81610510565b7f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d20602060243592610f8660ff60015460a01c1615611efb565b610f9b60018060a01b03600854163314612105565b6001600160a01b03165f818152600c83526040808220805460ff19166001179055828252600d8452908190208590555193845292a260405160018152602090f35b3461050c575f36600319011261050c576105086104f4612afb565b3461050c57602036600319011261050c5760043561101481610510565b61102860018060a01b035f54163314612055565b6001600160a01b0381161561107257611040906120a0565b6001546001600160a01b03167fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a6045f80a2005b60405162461bcd60e51b815260206004820152602860248201527f5061757361626c653a206e65772070617573657220697320746865207a65726f604482015267206164647265737360c01b6064820152608490fd5b3461050c5760a036600319011261050c576004356110e581610510565b60443560243560ff8216820361050c57610a8e926111356064356111276084359561111860ff60015460a01c1615611efb565b60405196879360208501612f9b565b03601f1981018552846103d5565b6132f0565b3461050c575f36600319011261050c57602060ff60015460a01c166040519015158152f35b3461050c57602036600319011261050c576020610ae560043561118181610510565b612e37565b3461050c57602036600319011261050c576004356111a381610510565b60018060a01b03165f526011602052602060405f2054604051908152f35b3461050c575f36600319011261050c5760206040515f5160206138fc5f395f51905f528152f35b3461050c575f36600319011261050c5760015461120f336001600160a01b03831614612728565b60ff60a01b1916600160a01b176001557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6255f80a1005b60e060031982011261050c5760043561125d81610510565b9160243561126a81610510565b9160443591606435916084359160a4359160c435906001600160401b03821161050c576104d6916004016109ae565b3461050c57610a8e6112aa36611245565b956112c360ff60019793979694965460a01c1615611efb565b6112cf61067c82612c26565b6112db61067c83612c26565b612fba565b3461050c57602036600319011261050c576004356112fd81610510565b60018060a01b03165f52600d602052602060405f2054604051908152f35b3461050c575f36600319011261050c575f546040516001600160a01b039091168152602090f35b3461050c575f36600319011261050c576040515f60055461136281610389565b80845290600181169081156113e15750600114611396575b6105088361138a818503826103d5565b604051918291826104c5565b60055f9081525f51602061383c5f395f51905f52939250905b8082106113c75750909150810160200161138a61137a565b9192600181602092548385880101520191019092916113af565b60ff191660208086019190915291151560051b8401909101915061138a905061137a565b3461050c575f36600319011261050c576001546040516001600160a01b039091168152602090f35b3461050c5760a036600319011261050c5760043561144a81610510565b6024359061145782610510565b6084359160643590604435906001600160401b03851161050c57611482610a8e9536906004016109ae565b9361149560ff60015460a01c1615611efb565b613199565b3461050c575f36600319011261050c5760206040515f51602061385c5f395f51905f528152f35b3461050c57604036600319011261050c576004356114de81610510565b6024356114f360ff60015460a01c1615611efb565b335f52600a6020526115088260405f20612040565b54906040516115186060826103d5565b602581527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77602082015264207a65726f60d81b60408201528282116115705750810390811161156b57610b6f9133612b1a565b612dca565b60405162461bcd60e51b815290819061158c90600483016104c5565b0390fd5b3461050c57604036600319011261050c57610b6f6004356115b081610510565b602435906115c660ff60015460a01c1615611efb565b6115d261067c33612c26565b6115de61067c82612c26565b33612cf9565b3461050c57602036600319011261050c5760043561160181610510565b61161560018060a01b035f54163314612055565b6001600160a01b0316611629811515612163565b600880546001600160a01b031916821790557fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e65f80a2005b3461050c57602036600319011261050c5760043561167e81610510565b60018060a01b03165f52600c602052602060ff60405f2054166040519015158152f35b3461050c57602036600319011261050c576004356116be81610510565b6116d260018060a01b035f54163314612055565b6001600160a01b0381161561171c576116ea906120c2565b6002546001600160a01b03167fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e5f80a2005b60405162461bcd60e51b815260206004820152603260248201527f426c61636b6c69737461626c653a206e657720626c61636b6c697374657220696044820152717320746865207a65726f206164647265737360701b6064820152608490fd5b3461050c57606036600319011261050c5760043561179981610510565b6024356117a581610510565b600e5460443591906001600160a01b0316330361187b575f80916118589460405194602086019263a9059cbb60e01b845260018060a01b031660248701526044860152604485526117f76064866103d5565b60018060a01b03169082604051956118106040886103d5565b602087527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020880152611846843b1515613780565b51925af16118526137cc565b906137fb565b80518061186157005b8160208061187693610a8e9501019101613109565b61369e565b60405162461bcd60e51b8152602060048201526024808201527f526573637561626c653a2063616c6c6572206973206e6f74207468652072657360448201526331bab2b960e11b6064820152608490fd5b3461050c57606036600319011261050c576004356118e981610510565b604435906024356001600160401b03831161050c5761190f610a8e9336906004016109ae565b9161113560ff60015460a01c1615611efb565b3461050c575f36600319011261050c576002546040516001600160a01b039091168152602090f35b3461050c57610a8e61195b36611245565b9561197460ff60019793979694965460a01c1615611efb565b61198061067c82612c26565b61198c61067c83612c26565b61338d565b3461050c5760e036600319011261050c57610a8e6004356119b181610510565b6024356119bd81610510565b604435606435916119cc6109d9565b9361149560a4356119fb60c435976119ec60ff60015460a01c1615611efb565b60405198899360208501612f9b565b03601f1981018752866103d5565b3461050c57602036600319011261050c576004356001600160401b03811161050c57611a39903690600401610e84565b60ff60085460a01c1680611b4d575b1561050c576001600160401b0381116103f857611a6f81611a6a600454610389565b6122e5565b5f601f8211600114611ad457611ab79282611a9981611ab295611aa4955f91611ac9575b506123a2565b6004555b3691610978565b611aac612afb565b9061340a565b600f55565b610a8e600160ff196012541617601255565b90508401355f611a93565b60045f52601f198216905f51602061391c5f395f51905f52915f5b818110611b35575092611aa492611ab7959282611ab29610611b1c575b5050600181811b01600455611a9d565b8301355f19600384901b60f8161c191690555f80611b0c565b91926020600181928689013581550194019201611aef565b5060ff6012541615611a48565b3461050c575f36600319011261050c5760206040515f51602061387c5f395f51905f528152f35b3461050c57604036600319011261050c576020611bca600435611ba381610510565b60243590611bb082610510565b6001600160a01b03165f908152600a845260409020612040565b54604051908152f35b61012090600319011261050c57600435611bec81610510565b90602435611bf981610510565b9060443590606435906084359060a4359060c43560ff8116810361050c579060e435906101043590565b3461050c57610a8e61198c611c7e611c3a36611bd3565b9992989091611c5760ff60019a969a9997995460a01c1615611efb565b611c6361067c86612c26565b611c6f61067c87612c26565b6040519a8b9360208501612f9b565b03601f1981018952886103d5565b3461050c575f36600319011261050c576040515f600754611cac81610389565b80845290600181169081156113e15750600114611cd3576105088361138a818503826103d5565b60075f9081525f51602061389c5f395f51905f52939250905b808210611d045750909150810160200161138a61137a565b919260018160209254838588010152019101909291611cec565b3461050c57604036600319011261050c57600435611d3b81610510565b6024359060018060a01b03165f52601060205260405f20905f52602052602060ff60405f2054166040519015158152f35b3461050c57610a8e6112db611c7e611c3a36611bd3565b3461050c57602036600319011261050c57600435611da081610510565b5f546001600160a01b031690611db7338314612055565b6001600160a01b03811615611e0c57604080516001600160a01b0393841681529282166020840152610a8e927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a16120e4565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461050c57602036600319011261050c57600435611e7d81610510565b611e9260018060a01b03600254163314611f3a565b611e9b81613415565b6001600160a01b03167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8555f80a2005b3461050c57602036600319011261050c576020611ef1600435611eec81610510565b612c26565b6040519015158152f35b15611f0257565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b15611f4157565b60405162461bcd60e51b815260206004820152602c60248201527f426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686560448201526b10313630b1b5b634b9ba32b960a11b6064820152608490fd5b15611fa257565b60405162461bcd60e51b815260206004820152602560248201527f426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c6044820152641a5cdd195960da1b6064820152608490fd5b6001600160a01b03165f908152600a6020526040902090565b6001600160a01b03165f908152600d6020526040902090565b6001600160a01b03165f90815260036020526040902090565b9060018060a01b03165f5260205260405f2090565b1561205c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b1561210c57565b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61736044820152683a32b926b4b73a32b960b91b6064820152608490fd5b1561216a57565b60405162461bcd60e51b815260206004820152602f60248201527f46696174546f6b656e3a206e6577206d61737465724d696e746572206973207460448201526e6865207a65726f206164647265737360881b6064820152608490fd5b156121ce57565b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a206e65772070617573657220697320746865207a65726044820152686f206164647265737360b81b6064820152608490fd5b1561222c57565b60405162461bcd60e51b815260206004820152602e60248201527f46696174546f6b656e3a206e657720626c61636b6c697374657220697320746860448201526d65207a65726f206164647265737360901b6064820152608490fd5b1561228f57565b60405162461bcd60e51b815260206004820152602860248201527f46696174546f6b656e3a206e6577206f776e657220697320746865207a65726f604482015267206164647265737360c01b6064820152608490fd5b90601f82116122f2575050565b8082116122fd575050565b60045f5260205f206020601f830160051c921061233c575b81601f9101920160051c03905f5b82811061232f57505050565b5f82820155600101612323565b5f9150612315565b919091601f8311612355575b505050565b81831161236157505050565b5f5260205f206020601f830160051c921061239a575b81601f9101920160051c03905f5b82811015612350575f82820155600101612385565b5f9150612377565b8160011b915f199060031b1c19161790565b80519091906001600160401b0381116103f8576123dd816123d6600454610389565b6004612344565b602092601f821160011461241057612400929382915f92612405575b50506123a2565b600455565b015190505f806123f9565b60045f52601f198216935f51602061391c5f395f51905f52915f5b8681106124615750836001959610612449575b505050811b01600455565b01515f1960f88460031b161c191690555f808061243e565b9192602060018192868501518155019401920161242b565b80519091906001600160401b0381116103f8576124a28161249b600554610389565b6005612344565b602092601f82116001146124c9576124c4929382915f926124055750506123a2565b600555565b60055f52601f198216935f51602061383c5f395f51905f52915f5b86811061251a5750836001959610612502575b505050811b01600555565b01515f1960f88460031b161c191690555f80806124f7565b919260206001819286850151815501940192016124e4565b80519091906001600160401b0381116103f85761255b81612554600754610389565b6007612344565b602092601f82116001146125825761257d929382915f926124055750506123a2565b600755565b60075f52601f198216935f51602061389c5f395f51905f52915f5b8681106125d357508360019596106125bb575b505050811b01600755565b01515f1960f88460031b161c191690555f80806125b0565b9192602060018192868501518155019401920161259d565b969593949190929460ff60085460a01c166126d05761268a6126b69661267a6126ac946126756126b1986126706126bb9e61266b8f61265b8f61264b8f61263b8f60018060a01b03161515612163565b6001600160a01b031615156121c7565b6001600160a01b03161515612225565b6001600160a01b03161515612288565b6123b4565b612479565b612532565b60ff1660ff196006541617600655565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6120a0565b6120c2565b6120e4565b6008805460ff60a01b1916600160a01b179055565b60405162461bcd60e51b815260206004820152602a60248201527f46696174546f6b656e3a20636f6e747261637420697320616c726561647920696044820152691b9a5d1a585b1a5e995960b21b6064820152608490fd5b1561272f57565b60405162461bcd60e51b815260206004820152602260248201527f5061757361626c653a2063616c6c6572206973206e6f7420746865207061757360448201526132b960f11b6064820152608490fd5b1561278657565b60405162461bcd60e51b815260206004820152602160248201527f46696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74656044820152603960f91b6064820152608490fd5b156127dc57565b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a206d696e7420616d6f756e74206e6f7420677265617460448201526806572207468616e20360bc1b6064820152608490fd5b1561283a57565b60405162461bcd60e51b815260206004820152602e60248201527f46696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d60448201526d696e746572416c6c6f77616e636560901b6064820152608490fd5b1561289d57565b60405162461bcd60e51b815260206004820152602660248201527f46696174546f6b656e3a206275726e20616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b91908110156129015760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356104d681610510565b1561292657565b60405162461bcd60e51b815260206004820152603d60248201527f46696174546f6b656e56325f323a20426c61636b6c697374696e67207072657660448201527f696f75736c7920756e626c61636b6c6973746564206163636f756e74210000006064820152608490fd5b919392600260ff601254160361050c576001600160401b0381116103f8576129be8161249b600554610389565b5f601f8211600114612a8c5781906129e0939495965f92612a815750506123a2565b6005555b5f5b818110612a21575050506129f930613415565b612a0f612a0530612027565b805460ff19169055565b610434600360ff196012541617601255565b80612a51612a4c612a45612a40612a3b600196888a6128f1565b612915565b612027565b5460ff1690565b61291f565b612a67612a62612a3b8386886128f1565b613415565b612a7b612a05612a40612a3b8487896128f1565b016129e6565b013590505f806123f9565b60055f52601f198216955f51602061383c5f395f51905f52915f5b888110612ae357508360019596979810612aca575b505050811b016005556129e4565b01355f19600384901b60f8161c191690555f8080612abc565b90926020600181928686013581550194019101612aa7565b60405190612b0a6040836103d5565b60018252601960f91b6020830152565b6001600160a01b03811691908215612bd5576001600160a01b038216938415612b855780612b6f7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946106dd612b8095611ff5565b556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600160a01b03165f9081526009602052604090205460ff1c60011490565b15612c4d57565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612ca557565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038316918215612d77575f5160206138bc5f395f51905f5291612d67612b8092612d5a60018060a01b03821697612d39891515612c46565b612d4d612d4582612e37565b861115612c9e565b610ca985610caf83612e37565b610ca983610ca483612e37565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b634e487b7160e01b5f52601160045260245ffd5b90818111612df257810390811161156b5790565b60405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606490fd5b6001600160a01b03165f908152600960205260409020546001600160ff1b031690565b6104d6610ad56103fd565b9081019081811161156b578110612e795790565b60405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b6044820152606490fd5b6001600160ff1b038211612f4357612ed381612c26565b612ef0576001600160a01b03165f90815260096020526040902055565b60405162461bcd60e51b815260206004820152602560248201527f46696174546f6b656e56325f323a204163636f756e7420697320626c61636b6c6044820152641a5cdd195960da1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f46696174546f6b656e56325f323a2042616c616e636520657863656564732028604482015269325e323535202d20312960b01b6064820152608490fd5b91604193918352602083015260ff60f81b9060f81b1660408201520190565b919490939192336001600160a01b0386160361305c57610434968382612fe86130579661305195878a6134a0565b604080515f5160206138fc5f395f51905f52602082019081526001600160a01b038a811693830193909352918a166060820152608081018b905260a081019290925260c082019290925260e08082018690528152613048610100826103d5565b51902085613566565b8261362f565b612cf9565b60405162461bcd60e51b815260206004820152602560248201527f46696174546f6b656e56323a2063616c6c6572206d7573742062652074686520604482015264706179656560d81b6064820152608490fd5b156130b657565b60405162461bcd60e51b815260206004820152601e60248201527f46696174546f6b656e56323a207065726d6974206973206578706972656400006044820152606490fd5b5f19811461156b5760010190565b9081602091031261050c5751801515810361050c5790565b6104d6939260609260018060a01b03168252602082015281604082015201906104a1565b6040513d5f823e3d90fd5b1561315757565b60405162461bcd60e51b815260206004820152601a602482015279454950323631323a20696e76616c6964207369676e617475726560301b6044820152606490fd5b9091926132789461325c6020925f19811480156132e6575b6131ba906130af565b6131c2612e5a565b906132456132536131e38860018060a01b03165f52601160205260405f2090565b928354936131f0856130fb565b9055604080515f5160206138dc5f395f51905f528a82019081526001600160a01b03808d1660208301528d1692810192909252606082018d9052608082019590955260a08101919091529291829060c0850190565b03601f1981018352826103d5565b51902090613681565b604051633667532960e11b815296879283928660048501613121565b038173800c32eaa2a6c93cf4cb51794450ed77fbfbb1725af49384156132e157610434946132ad915f916132b2575b50613150565b612b1a565b6132d4915060203d6020116132da575b6132cc81836103d5565b810190613109565b5f6132a7565b503d6132c2565b613145565b50428110156131b1565b90916133469061330084846136fd565b60405192602084015f51602061387c5f395f51905f52815260018060a01b038216948560408201528660608201526060815261333d6080826103d5565b51902090613566565b805f52601060205260405f20825f5260205260405f20600160ff198254161790557f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d815f80a3565b926104349661305191613057949793966133a98183878a6134a0565b604080515f51602061385c5f395f51905f52602082019081526001600160a01b038a811693830193909352918a166060820152608081018b905260a081019390935260c083019190915260e0808301869052825290613048610100826103d5565b6104d6914691613437565b6001600160a01b03165f9081526009602052604090208054600160ff1b179055565b919091602081519101209160208151910120906040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85526040840152606083015260808201523060a082015260a0815261349a60c0826103d5565b51902090565b92909142111561350d574210156134ba57610434916136fd565b60405162461bcd60e51b815260206004820152602560248201527f46696174546f6b656e56323a20617574686f72697a6174696f6e2069732065786044820152641c1a5c995960da1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f46696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f60448201526a1d081e595d081d985b1a5960aa1b6064820152608490fd5b61357c602092613577610ad56103fd565b613681565b604051633667532960e11b8152938492839261359c929160048501613121565b038173800c32eaa2a6c93cf4cb51794450ed77fbfbb1725af49081156132e1575f91613610575b50156135cb57565b60405162461bcd60e51b815260206004820152601e60248201527f46696174546f6b656e56323a20696e76616c6964207369676e617475726500006044820152606490fd5b613629915060203d6020116132da576132cc81836103d5565b5f6135c3565b6001600160a01b03165f8181526010602090815260408083208584529091528120805460ff191660011790557f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a59080a3565b6042916040519161190160f01b8352600283015260228201522090565b156136a557565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b60018060a01b03165f52601060205260405f20905f5260205260ff60405f20541661372457565b60405162461bcd60e51b815260206004820152602e60248201527f46696174546f6b656e56323a20617574686f72697a6174696f6e20697320757360448201526d1959081bdc8818d85b98d95b195960921b6064820152608490fd5b1561378757565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b3d156137f6573d906137dd8261095d565b916137eb60405193846103d5565b82523d5f602084013e565b606090565b90919015613807575090565b8151156138175750805190602001fd5b60405162461bcd60e51b81526020600482015290819061158c9060248301906104a156fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db07c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9d099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de88a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b