solc-0.8.36-fakeopcode 0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb via-ir-high-runs

15675 bytes

60806040526004361015610011575f80fd5b5f5f3560e01c806313af403514612c17578063151c1ade14612bcf57806320b76e81146128eb578063238d6579146126ed5780632b4f013c146125ac5780632c3c91571461250d5780633644e515146124d257806346904840146124a25780634d98a93b1461239d57806350d8cd4b146121495780635a64f51e146120945780635c2bea4914611de85780635c60e39a14611d7757806365e4ad9e14611d0557806370ae92d214611ccd5780637784c68514611ba75780638069218f146117f45780638720316d1461165b5780638c1358a2146112b65780638da5cb5b1461128f57806393c5206214611201578063a99aad8914610f42578063b485f3b814610f13578063d8eabcb81461049b578063e0232b4214610354578063e74b981b14610295578063eecea0001461018e5763f2b863ce1461014e575f80fd5b3461018b57602060031936011261018b57604060209161016c612cd0565b6001600160a01b0316815260048352205460405160ff90911615158152f35b80fd5b503461018b57604060031936011261018b576101a8612cd0565b602435908115159182810361029157338085526006602090815260408087206001600160a01b0386165f90815290835220919384937fd5e969f01efe921d3f766bdebad25f0a05e3f237311f56482bf132d0326309c09361027d919061021f905460ff161515891415610219612fe4565b90612f83565b8589526006845261024d8360408b20906001600160a01b03166001600160a01b03165f5260205260405f2090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6040519586526001600160a01b031694a480f35b8380fd5b503461018b57602060031936011261018b576102af612cd0565b81546102c8906001600160a01b03163314610219612f48565b600154906001600160a01b03166102f26102e0612fe4565b6001600160a01b038416831415612f83565b6001600160a01b0316907fffffffffffffffffffffffff00000000000000000000000000000000000000006001600160a01b0383169116176001557f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a738280a280f35b503461018b57606060031936011261018b5761036e612cd0565b6024358260443567ffffffffffffffff811161049757610392903690600401612e75565b906103a661039e613150565b851515612f83565b336001600160a01b03166001600160a01b0316946001600160a01b03166001600160a01b03169485817fc76f1b4fe4396ac07a9fa55a415d4ca430e72651d37d3401f3bed7cb13fc4f126020604051898152a3610404853388613a9d565b6001600160a01b031691823b1561029157610452928492836040518096819582947f31f570720000000000000000000000000000000000000000000000000000000084528b60048501613123565b03925af1801561048c57610473575b506104709230915033906137f5565b80f35b8161047d91612d6f565b61048857825f610461565b8280fd5b6040513d84823e3d90fd5b5080fd5b503461018b5761012060031936011261018b576104b736612d92565b60a43590816001600160a01b0316908183036102915760e4359360c4356101043567ffffffffffffffff8111610488576104f5903690600401612e75565b918796819760a08720908187526003602052600460026040892001546001600160801b031694610543896001600160801b0316968761053261301f565b916001600160801b03161415612f83565b159161055a8d61055161305a565b90158518612f83565b610564848b613379565b60408a81015190517fa035b1fe0000000000000000000000000000000000000000000000000000000081529260209184919082906001600160a01b03165afa918215610f08578992610ed0575b506105be8286868d613bdb565b159c61060360409e8f906105d482519283612d6f565b601382527f706f736974696f6e206973206865616c746879000000000000000000000000006020830152612f83565b60808b0151670de0b6b3a764000003670de0b6b3a76400008111610ea35780670429d069189e00000290670429d069189e0000820403610ea357670de0b6b3a7640000900480670de0b6b3a76400000390670de0b6b3a76400008211610e7657670de0b6b3a764000014610e49578e906ec097ce7bc90715b34b9f100000000004670ff59ee833b30000811090670ff59ee833b300001802670ff59ee833b300001894155f14610d6a575050506106ba908b613cae565b6ec097ce7bc90715b34b9f0fffffffff8101809111610d3d576ec097ce7bc90715b34b9f10000000009004670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610d3d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820190828211610d105761074f8d959361074a8e9b9a999896946107839461336c565b613cc1565b82895260036020818152878b20600190810154868d5292909152878b20015460801c916001600160801b03909116906139a0565b915b81885260036020818152868a20600190810154858c5292909152868a20015486916107bd9160801c906001600160801b0316866136c1565b9b8c9a8b968b85856107ce8a61370c565b92898152600260205220906107fc91906001600160a01b03166001600160a01b03165f5260205260405f2090565b6001019081546001600160801b031690610815916130d0565b81546fffffffffffffffffffffffffffffffff19166001600160801b03919091161790556108428761370c565b868d526003602052848d20600101805490916108609160801c6130d0565b81546001600160801b031660809190911b6fffffffffffffffffffffffffffffffff1916179055858c526003602052838c20600101546108b0906001600160801b0316898111908a90030261370c565b868d526003602052848d20600101906108fa91906001600160801b036fffffffffffffffffffffffffffffffff19835416916001600160801b03166001600160801b031616179055565b8b85856109068561370c565b928981526002602052209061093491906001600160a01b03166001600160a01b03165f5260205260405f2090565b600101805490916109479160801c6130d0565b81546001600160801b031660809190911b6fffffffffffffffffffffffffffffffff19161790558b918c87819381835260026020528089898520906109a591906001600160a01b03166001600160a01b03165f5260205260405f2090565b600101547fa4946ede45d0c6f06a0f5ce92c9ad3b4751452d2fe0e25010783bcab57a67e419a60a09a9092909160801c14610af1575b5050505050336001600160a01b03166001600160a01b0316998a9881519a8b5260208b0152890152606088015260808701526001600160a01b031694a46020860151610a3390899033906001600160a01b0316613a9d565b82610a61575b50509251610a55935030915033906001600160a01b03166137f5565b82519182526020820152f35b92935090916001600160a01b031690813b1561029157918391610ab493838a518096819582947fcf7ea1960000000000000000000000000000000000000000000000000000000084528c60048501613123565b03925af18015610ae75790849291610ace575b8080610a39565b81809350610adb91612d6f565b61018b57808391610ac7565b86513d84823e3d90fd5b84975083965090610cce9160019394610d069652600260205283610b3183838c20906001600160a01b03166001600160a01b03165f5260205260405f2090565b01546001600160801b03166001600160801b0316988881526003602052610ca68583832001546001600160801b03168a83526003602052610bae8785852001546001600160801b03168c855260036020528d89878720015460801c6001600160801b03166001600160801b0316916001600160801b0316906136c1565b906001600160801b031690818110908218021899610c25610bce8c61370c565b8285526003602052610bef89878720019182546001600160801b03166130d0565b6001600160801b036fffffffffffffffffffffffffffffffff19835416916001600160801b03166001600160801b031616179055565b610c50610c318c61370c565b8285526003602052610bef8686209182546001600160801b03166130d0565b610c598c61370c565b9083526003602052610c7d878585200191825460801c6001600160801b03166130d0565b81546001600160801b031660809190911b6fffffffffffffffffffffffffffffffff1916179055565b8d8152600260205220906001600160a01b03166001600160a01b03165f5260205260405f2090565b01906001600160801b036fffffffffffffffffffffffffffffffff19835416916001600160801b03166001600160801b031616179055565b8c875f808d6109db565b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b859d508a670de0b6b3a76400009495926001610dd29389849e9d9c9b9f9a610dd7989b5260036020528282862001546001600160801b0316945260036020528d20015460801c6001600160801b03166001600160801b0316916001600160801b03169061397a565b613cae565b046ec097ce7bc90715b34b9f10000000008102908082046ec097ce7bc90715b34b9f10000000001490151715610e1c578b939291610e1491613cc1565b998a97610785565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b60248c7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9091506020813d602011610f00575b81610eec60209383612d6f565b81010312610efc5751905f6105b1565b5f80fd5b3d9150610edf565b6040513d8b823e3d90fd5b503461018b57602060031936011261018b576040602091600435815260058352205460ff166040519015158152f35b503461018b57610f5136612ea3565b91938395969395819660a08920928387526003602052610f9f60026040892001546001600160801b0316610f8361301f565b90896001600160801b0316906001600160801b03161415612f83565b1591610fb5610fac61305a565b82158518612f83565b876001600160a01b031692610fdd610fcb613095565b6001600160a01b038a16861415612f83565b610fe7858c613379565b6111a7575050818552600360208181526040808820548589529290915286205461104f916110229160801c906001600160801b03168a6136e7565b965b838752600260205260408720906001600160a01b03166001600160a01b03165f5260205260405f2090565b61105a87825461336c565b905561108b6110688761370c565b8387526003602052610c7d6040882091825460801c6001600160801b031661318b565b6110b76110978861370c565b8387526003602052610bef604088209182546001600160801b031661318b565b336001600160a01b03166001600160a01b031680927fedf8870433c83823eb071d3df1caa8d008f12f6440918c20d75a3602cda30fe060408051948b86528a60208701526001600160a01b031694a48261112d575b865160409087908790610a55908390309033906001600160a01b03166137f5565b6001600160a01b031690813b156102915791839161117c93836040518096819582947f2075be030000000000000000000000000000000000000000000000000000000084528c60048501613123565b03925af1801561048c57611192575b808061110c565b61119d828092612d6f565b61018b578061118b565b61104f919798506111fb90848852600360205260408820546001600160801b0316908589526003602052604089205460801c6001600160801b03166001600160801b0316916001600160801b0316906136c1565b97611024565b503461018b57604060031936011261018b5761124e6060916040611223612cfc565b916004358152600260205220906001600160a01b03166001600160a01b03165f5260205260405f2090565b60018154910154604051918252806001600160801b03166001600160801b0316602083015260801c6001600160801b03166001600160801b03166040820152f35b503461018b578060031936011261018b57546040516001600160a01b039091168152602090f35b503461018b5760a060031936011261018b576112d136612d92565b60a081206060820180516001600160a01b0316845260046020526040808520548151919392916113379160ff166113088683612d6f565b600f82527f49524d206e6f7420656e61626c656400000000000000000000000000000000006020830152612f83565b6080840180518652600560205261138a8487205460ff1685519061135b8783612d6f565b601082527f4c4c5456206e6f7420656e61626c6564000000000000000000000000000000006020830152612f83565b82865260036020526113f6600285882001546001600160801b03168551906113b28783612d6f565b601682527f6d61726b657420616c72656164792063726561746564000000000000000000006020830152886001600160801b0316906001600160801b031614612f83565b828652600360205283862060020180546fffffffffffffffffffffffffffffffff19166001600160801b0342161790558286526008602052838620855181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781559060049060208701516001840180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055868601516002840180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905583516003840180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905551910155817fac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac60a0855161159f81896080809180516001600160a01b0316845260208101516001600160a01b0316602085015260408101516001600160a01b0316604085015260608101516001600160a01b031660608501520151910152565ba2516001600160a01b039081169390851684036115ba578480f35b836020926116029550865260038352838620918685518097819582947f9451fed4000000000000000000000000000000000000000000000000000000008452600484016132c3565b03926001600160a01b03165af19081156116525750611623575b8080808480f35b6116449060203d60201161164b575b61163c8183612d6f565b8101906132b4565b505f61161c565b503d611632565b513d84823e3d90fd5b503461018b5761010060031936011261018b5761167736612d92565b60a435611682612ce6565b918360e43591826001600160a01b031694858403610488578561173161178c602095610c7d600161177787604061174f6104709f8f9061174a908e60a081209c8d92838d526020600390526117048d60028a822001546001600160801b03166116e961301f565b916001600160801b0316906001600160801b03161415612f83565b61171761170f613150565b871515612f83565b61171f613095565b906001600160a01b038e161415612f83565b61174561173d88613930565b6102196131b1565b613379565b61370c565b9588815260028d5220906001600160a01b03166001600160a01b03165f5260205260405f2090565b0191825460801c6001600160801b03166130d0565b6117a261179a8483876139c2565b6102196131ec565b60408051338152602081018990526001600160a01b0393841694909316927fe80ebd7cc9223d7382aab2e0d1d6155c65651f83d53c8b9b06901d167e3211429190a401516001600160a01b0316613a9d565b503461018b57600319360161010081126104975760a01361018b5760405161181b81612d26565b611823612cd0565b815261182d612cfc565b90602081019182526044358015158103610291576040820190815260608201916064358352608435926080820184815260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112611ba3576118cc60409586519061189a8883612d6f565b601182527f7369676e617475726520657870697265640000000000000000000000000000006020830152421115612f83565b815183516001600160a01b031688526007602052858820805461193292916118f382613287565b90558751916119028984612d6f565b600d83527f696e76616c6964206e6f6e636500000000000000000000000000000000000000602084015214612f83565b845160208101917f81d0284fb0e2cde18d0553b06189d6f7613c96a01bb5b5e7828eade6a0dcac91835284516001600160a01b03168783015287516001600160a01b03166060830152855115156080830152835160a08301525160c082015260c081526119a060e082612d6f565b519020845160208101917f190100000000000000000000000000000000000000000000000000000000000083527f00000000000000000000000000000000000000000000000000000000000000006022830152604282015260428152611a07606282612d6f565b5190208660a4358060ff168091036104975760209260809188519182528482015260c4358882015260e435606082015282805260015afa15611b99576020927fd5e969f01efe921d3f766bdebad25f0a05e3f237311f56482bf132d0326309c0928492611ad189516001600160a01b03168a6001600160a01b03166001600160a01b03168114159081611b85575b50885190611aa38a83612d6f565b601182527f696e76616c6964207369676e617475726500000000000000000000000000000087830152612f83565b81519051875190815233966001600160a01b039092169187917fa58af1a0c70dba0c7aa60d1a1a147ebd61000d1690a968828ac718bca927f2c79190a3611b678251151582516001600160a01b03166001600160a01b03166001600160a01b03168a526006855261024d888b208a516001600160a01b03166001600160a01b03166001600160a01b03165f5260205260405f2090565b5195519051945194151585526001600160a01b03908116951693a480f35b84516001600160a01b03161490505f611a95565b83513d87823e3d90fd5b8680fd5b503461018b57602060031936011261018b5760043567ffffffffffffffff8111610497573660238201121561049757806004013567ffffffffffffffff8111610488573660248260051b8401011161048857611c028161326f565b90611c106040519283612d6f565b808252611c1c8161326f565b92601f19602084019401368537845b828110611c775750505090604051928392602084019060208552518091526040840192915b818110611c5e575050500390f35b8251845285945060209384019390920191600101611c50565b611c8081613287565b9083811015611ca05760249060051b83010135548160051b850152611c2b565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b503461018b57602060031936011261018b576040602091611cec612cd0565b6001600160a01b03168152600783522054604051908152f35b503461018b57604060031936011261018b57611d696020916040611d27612cd0565b91611d30612cfc565b926001600160a01b03166001600160a01b031681526006855220906001600160a01b03166001600160a01b03165f5260205260405f2090565b5460ff166040519015158152f35b503461018b57602060031936011261018b576004358152600360209081526040918290208054600182015460029092015484516001600160801b038084168252608093841c958201959095528484169581019590955291811c606085015291811682840152901c60a082015260c090f35b503461018b57604090611dfa36612efc565b929493918095809660a08520918288526003602052611e4660028b8a2001546001600160801b0316611e2a61301f565b908a6001600160801b0316906001600160801b03161415612f83565b1592611e5c611e5361305a565b82158618612f83565b866001600160a01b031693611e84611e72613095565b6001600160a01b038b16871415612f83565b611e9061173d87613930565b611e9a8488613379565b6120325750509186939183610a55969488526003602052611fd5611ef58b8a20546001600160801b0316838b5260036020528c8b205460801c6001600160801b03166001600160801b0316906001600160801b0316896139a0565b985b8281526002602052611f25858d8320906001600160a01b03166001600160a01b03165f5260205260405f2090565b611f308b8254613262565b9055611f60611f3e8b61370c565b8483526003602052610c7d8e842091825460801c6001600160801b03166130d0565b611f8b611f6c8961370c565b8483526003602052610bef8e84209182546001600160801b03166130d0565b82815260036020528b600181832001546001600160801b031691848152600360205220546001600160801b03166001600160801b0316906001600160801b03161115610219613227565b895133815260208101879052604081018990526001600160a01b0392831693909216917fa56fc0ad5702ec05ce63666221f796fb62437c32db1aa1aa075fc6484cf58fbf9080606081015b0390a4516001600160a01b0316613a9d565b611fd598509161208c610a55979593828a9896949a5260036020528b8820546001600160801b03169083895260036020528c89205460801c6001600160801b03166001600160801b0316916001600160801b03169061397a565b988996611ef7565b503461018b57602060031936011261018b576120ae612cd0565b81546120c7906001600160a01b03163314610219612f48565b6001600160a01b0316808252600460205260408220546120ed9060ff1615610219612fe4565b80825260046020526040822060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f590e04cdebeccba40f566186b9746ad295a4cd358ea4fefaaea6ce79630d96c08280a280f35b503461018b5760409061215b36612efc565b929493918095809660a0852091828852600360205261218b60028b8a2001546001600160801b0316611e2a61301f565b1592612198611e5361305a565b866001600160a01b0316936121ae611e72613095565b6121ba61173d87613930565b6121c48488613379565b6123355750509186939183610a559694885260036020526122e661222560018c8b2001546001600160801b0316838b52600360205260018d8c20015460801c6001600160801b03166001600160801b0316906001600160801b0316896139a0565b985b6122796122338b61370c565b8483526002602052610bef60018f89612267918720906001600160a01b03166001600160a01b03165f5260205260405f2090565b019182546001600160801b031661318b565b6122aa6122858b61370c565b8483526003602052610c7d60018f85200191825460801c6001600160801b031661318b565b6122d86122b68961370c565b8483526003602052610bef60018f8520019182546001600160801b031661318b565b611f8b61179a8685896139c2565b895133815260208101879052604081018990526001600160a01b0392831693909216917f570954540bed6b1304a87dfe815a5eda4a648f7097a16240dcd85c9b5fd42a43908060608101612020565b6122e6985091612395610a55979593828a9896949a52600360205260018c892001546001600160801b031690838952600360205260018d8a20015460801c6001600160801b03166001600160801b0316916001600160801b03169061397a565b988996612227565b503461018b57602060031936011261018b577f297b80e7a896fad470c630f6575072d609bde997260ff3db851939405ec2913960206004356123ff84546001600160a01b03166001600160a01b0316336001600160a01b031614610219612f48565b8084526005825261241a604085205460ff1615610219612fe4565b61246460405161242b604082612d6f565b601181527f6d6178204c4c545620657863656564656400000000000000000000000000000084820152670de0b6b3a76400008310612f83565b808452600582526040842060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051908152a180f35b503461018b578060031936011261018b5760206001546001600160a01b0316604051906001600160a01b03168152f35b503461018b578060031936011261018b5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461018b57602060031936011261018b57604060a091600435815260086020522080546001600160a01b03169060018101546001600160a01b03169060028101546001600160a01b0316600460038301546001600160a01b031692015492604051946001600160a01b031685526001600160a01b031660208501526001600160a01b031660408401526001600160a01b031660608301526080820152f35b503461018b5760c060031936011261018b576125c736612d92565b7f139d6f58e9a127229667c8e3b36e88890a66cfc8ab1024ddc513e189e125b75b602060a43561261785546001600160a01b03166001600160a01b0316336001600160a01b031614610219612f48565b6126af60a08520809581885260038552612643600260408a2001546001600160801b0316611e2a61301f565b8188526003855260408820600201546126649060801c851415610219612fe4565b611745604051612675604082612d6f565b601081527f6d61782066656520657863656564656400000000000000000000000000000000878201526703782dace9d90000861115612f83565b838552600382526040852060020180546001600160801b0316608083901b6fffffffffffffffffffffffffffffffff1916179055604051908152a280f35b503461018b5761010060031936011261018b5761270936612d92565b60a43582612715612ce6565b60e43567ffffffffffffffff811161048857612735903690600401612e75565b9160a0862090818552600360205261277b60026040872001546001600160801b031661275f61301f565b90876001600160801b0316906001600160801b03161415612f83565b61278661170f613150565b612803816001600160a01b0316916127b161279f613095565b6001600160a01b038916851415612f83565b610c7d60016127ee6127c28b61370c565b93878b52600260205260408b20906001600160a01b03166001600160a01b03165f5260205260405f2090565b0191825460801c6001600160801b031661318b565b336001600160a01b03166001600160a01b031680927fa3b9472a1399e17e123f3c2e6586c23e504184d504de59cdaa2b375e880c61846020604051948a86526001600160a01b031694a482612872575b60208601518490610470908790309033906001600160a01b03166137f5565b6001600160a01b031691823b15610291576128c0928492836040518096819582947fb1022fdf0000000000000000000000000000000000000000000000000000000084528b60048501613123565b03925af1801561048c576128d6575b8080612853565b816128e091612d6f565b61048857825f6128cf565b34610efc576128f936612ea3565b91929384819560a0882092835f526003602052612939600260405f2001546001600160801b031661292861301f565b906001600160801b03161515612f83565b1591612946610fac61305a565b866001600160a01b03169261295c61039e613095565b612966858b613379565b612b945750505f828152600360205260409020600101546129eb9061299a90608081901c906001600160801b0316896136e7565b955b610bef60016129d96129ad8a61370c565b93875f52600260205260405f20906001600160a01b03166001600160a01b03165f5260205260405f2090565b019182546001600160801b03166130d0565b612a1d6129f78661370c565b835f526003602052610c7d600160405f200191825460801c6001600160801b03166130d0565b815f526003602052612a97612a51600160405f2001546001600160801b03166001600160801b03168880820391110261370c565b835f526003602052600160405f2001906001600160801b036fffffffffffffffffffffffffffffffff19835416916001600160801b03166001600160801b031616179055565b336001600160a01b03166001600160a01b031680927f52acb05cebbd3cd39715469f22afbf5a17496295ef3bc9bb5944056c63ccaa0960408051948a86528960208701526001600160a01b031694a482612b0c575b5050925160409350610a55908390309033906001600160a01b03166137f5565b6001600160a01b031691823b15610efc57612b5a925f92836040518096819582947f05b4591c0000000000000000000000000000000000000000000000000000000084528b60048501613123565b03925af18015612b8957604094610a55928592612b79575b5094612aec565b5f612b8391612d6f565b5f612b72565b6040513d5f823e3d90fd5b5f8481526003602052604090206001015496975090956129eb91612bc991608081901c916001600160801b03909116906136c1565b9661299c565b34610efc5760a0600319360112610efc57612c15612bec36612d92565b60a0812090815f526003602052611745600260405f2001546001600160801b031661292861301f565b005b34610efc576020600319360112610efc57612c30612cd0565b5f54906001600160a01b03821690612c7090612c55612c4d612f48565b338514612f83565b6001600160a01b031691612c67612fe4565b90831415612f83565b6001600160a01b0316907fffffffffffffffffffffffff00000000000000000000000000000000000000006001600160a01b0383169116175f557f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f80a2005b60043590816001600160a01b03168203610efc57565b60c43590816001600160a01b03168203610efc57565b60243590816001600160a01b03168203610efc57565b3590816001600160a01b03168203610efc57565b60a0810190811067ffffffffffffffff821117612d4257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff821117612d4257604052565b60031960a0910112610efc5760405190612dab82612d26565b81600435806001600160a01b03168103610efc578152602435806001600160a01b03168103610efc576020820152604435806001600160a01b03168103610efc576040820152606435806001600160a01b03168103610efc5760608201526080608435910152565b91908260a0910312610efc57604051612e2b81612d26565b6080808294612e3981612d12565b8452612e4760208201612d12565b6020850152612e5860408201612d12565b6040850152612e6960608201612d12565b60608501520135910152565b9181601f84011215610efc5782359167ffffffffffffffff8311610efc5760208381860195010111610efc57565b610120600319820112610efc57612ebb816004612e13565b9160a4359160c4359160e435806001600160a01b03168103610efc5791610104359067ffffffffffffffff8211610efc57612ef891600401612e75565b9091565b610120600319820112610efc57612f14906004612e13565b9060a4359060c4359060e435806001600160a01b03168103610efc579061010435806001600160a01b03168103610efc5790565b60405190612f57604083612d6f565b600982527f6e6f74206f776e657200000000000000000000000000000000000000000000006020830152565b15612f8b5750565b6044602091601f19601f6040519485937f08c379a00000000000000000000000000000000000000000000000000000000085528160048601528051918291826024880152018686015e5f85828601015201168101030190fd5b60405190612ff3604083612d6f565b600b82527f616c7265616479207365740000000000000000000000000000000000000000006020830152565b6040519061302e604083612d6f565b601282527f6d61726b6574206e6f74206372656174656400000000000000000000000000006020830152565b60405190613069604083612d6f565b601282527f696e636f6e73697374656e7420696e70757400000000000000000000000000006020830152565b604051906130a4604083612d6f565b600c82527f7a65726f206164647265737300000000000000000000000000000000000000006020830152565b906001600160801b0316906001600160801b031603906001600160801b0382116130f657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9183606094601f92601f1994865260406020870152816040870152868601375f8582860101520116010190565b6040519061315f604083612d6f565b600b82527f7a65726f206173736574730000000000000000000000000000000000000000006020830152565b906001600160801b0316906001600160801b031601906001600160801b0382116130f657565b604051906131c0604083612d6f565b600c82527f756e617574686f72697a656400000000000000000000000000000000000000006020830152565b604051906131fb604083612d6f565b601782527f696e73756666696369656e7420636f6c6c61746572616c0000000000000000006020830152565b60405190613236604083612d6f565b601682527f696e73756666696369656e74206c6971756964697479000000000000000000006020830152565b919082039182116130f657565b67ffffffffffffffff8111612d425760051b60200190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146130f65760010190565b90816020910312610efc575190565b909291600261014091613327846101608101976080809180516001600160a01b0316845260208101516001600160a01b0316602085015260408101516001600160a01b0316604085015260608101516001600160a01b031660608501520151910152565b80546001600160801b0380821660a0870152608091821c60c0870152600183015480821660e0880152821c61010087015292909101549182166101208501521c910152565b919082018092116130f657565b815f5260036020526133a4600260405f2001546001600160801b03166001600160801b031642613262565b80156136bc5760608201516001600160a01b0316806133f7575b5050505f90815260036020526040902060020180546fffffffffffffffffffffffffffffffff19166001600160801b034216179055565b565b613442928160209250855f526003835260405f20915f6040518097819582947f9451fed4000000000000000000000000000000000000000000000000000000008452600484016132c3565b03926001600160a01b03165af1908115612b895783925f92613684575b507f9d9bd501d0657d7dfe415f779a620a62b78bc508ddc0891fbbd8b7ac0f8fce8791670de0b6b3a76400006134fc606093865f5260036020526134f66134c0600160405f2001546001600160801b03166001600160801b03169286613cae565b6134f1671bc16d674ec800006134d68380613cae565b046729a2241af62c00006134ea8483613cae565b049261336c565b61336c565b90613cae565b0461352c6135098261370c565b865f526003602052610bef600160405f20019182546001600160801b031661318b565b6135586135388261370c565b865f526003602052610bef60405f209182546001600160801b031661318b565b5f8581526003602052604081206002015490919060801c61358d575b60405192835260208301526040820152a25f80806133be565b9050845f526003602052613609670de0b6b3a76400006135c9600260405f20015460801c6001600160801b03166001600160801b031684613cae565b04865f5260036020526135f28160405f20546001600160801b03166001600160801b0316613262565b5f8881526003602052604090205460801c916136e7565b90855f52600260205261364360405f206001546001600160a01b03166001600160a01b03166001600160a01b03165f5260205260405f2090565b61364e83825461336c565b905561367f61365c8361370c565b875f526003602052610c7d60405f2091825460801c6001600160801b031661318b565b613574565b925090506020823d6020116136b4575b816136a160209383612d6f565b81010312610efc5790518291606061345f565b3d9150613694565b505050565b9190600181018091116130f657620f424082018092116130f6576136e492613cf8565b90565b620f424083018093116130f657600182018092116130f6576136e49261074a91613cae565b61375760405161371d604082612d6f565b601481527f6d61782075696e7431323820657863656564656400000000000000000000000060208201526001600160801b03831115612f83565b6001600160801b031690565b60405190613772604083612d6f565b600782527f6e6f20636f6465000000000000000000000000000000000000000000000000006020830152565b3d156137d8573d9067ffffffffffffffff8211612d4257604051916137cd601f8201601f191660200184612d6f565b82523d5f602084013e565b606090565b90816020910312610efc57518015158103610efc5790565b925f92918380936133f5966001600160a01b03166001600160a01b031693613822853b1515610219613763565b6040519160208301947f23b872dd0000000000000000000000000000000000000000000000000000000086526001600160a01b031660248401526001600160a01b0316604483015260648201526064815261387e608482612d6f565b51925af161388a61379e565b6138cc60409283519061389d8583612d6f565b601582527f7472616e7366657246726f6d20726576657274656400000000000000000000006020830152612f83565b8051908115918215613916575b50506138e782519283612d6f565b601b82527f7472616e7366657246726f6d2072657475726e65642066616c736500000000006020830152612f83565b61392992506020809183010191016137dd565b5f806138d9565b6001600160a01b031680336001600160a01b031614908115613950575090565b6001600160a01b03165f908152600660209081526040808320338452909152902090505460ff1690565b60018201929183106130f657620f424082018092116130f6576136e49261074a91613cae565b91620f424081018091116130f657600182018092116130f6576136e492613cf8565b9091825f52600260205260016139f58260405f20906001600160a01b03166001600160a01b03165f5260205260405f2090565b01546001600160801b031615613a955760408281015190517fa035b1fe0000000000000000000000000000000000000000000000000000000081529390602090859060049082906001600160a01b03165afa928315612b89575f93613a5f575b6136e49450613bdb565b92506020843d602011613a8d575b81613a7a60209383612d6f565b81010312610efc576136e4935192613a55565b3d9150613a6d565b505050600190565b6133f5925f9283613b1b613b2982956001600160a01b03166001600160a01b031694613ace863b1515610219613763565b60405192839160208301967fa9059cbb000000000000000000000000000000000000000000000000000000008852602484016020909392919360408101946001600160a01b031681520152565b03601f198101835282612d6f565b51925af1613b3561379e565b613b77604092835190613b488583612d6f565b601182527f7472616e736665722072657665727465640000000000000000000000000000006020830152612f83565b8051908115918215613bc1575b5050613b9282519283612d6f565b601782527f7472616e736665722072657475726e65642066616c73650000000000000000006020830152612f83565b613bd492506020809183010191016137dd565b5f80613b84565b60806ec097ce7bc90715b34b9f1000000000613c9e613ca894966001613c8c670de0b6b3a7640000988a5f526002602052613c6183613c378360405f20906001600160a01b03166001600160a01b03165f5260205260405f2090565b01545f8d81526003602052604090208501546001600160801b03818b1c81169291811691166136c1565b9a5f52600260205260405f20906001600160a01b03166001600160a01b03165f5260205260405f2090565b0154841c6001600160801b0316613cae565b0491015190613cae565b04101590565b818102929181159184041417156130f657565b8115613ccb570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90613d0291613cae565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101918183116130f6576136e49261074a9161336c56