@morpho-dev/router 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +20 -5
  2. package/dist/cli.js +14944 -8994
  3. package/dist/drizzle/migrations/0031_sell-takeable-reindex.sql +254 -0
  4. package/dist/drizzle/migrations/0032_callback-type.sql +3 -0
  5. package/dist/drizzle/migrations/0033_obligation-id-bytes20.sql +255 -0
  6. package/dist/drizzle/migrations/0034_chain-checkpoints.sql +1 -0
  7. package/dist/drizzle/migrations/0035_chain-tip-hash-cas.sql +1 -0
  8. package/dist/drizzle/migrations/0036_pending-links.sql +22 -0
  9. package/dist/drizzle/migrations/0037_chain-finalized-anchor.sql +2 -0
  10. package/dist/drizzle/migrations/0038_add-obligation-rcf-threshold.sql +2 -0
  11. package/dist/drizzle/migrations/0039_add-offers-composite-indexes.sql +2 -0
  12. package/dist/drizzle/migrations/0040_drop-redundant-offers-indexes.sql +2 -0
  13. package/dist/drizzle/migrations/0041_add-group-winner-expression-index.sql +10 -0
  14. package/dist/drizzle/migrations/0042_contract-sync-v1.14.sql +284 -0
  15. package/dist/drizzle/migrations/0043_add-obligation-side-tick-index.sql +1 -0
  16. package/dist/drizzle/migrations/0044_index-audit-cleanup.sql +27 -0
  17. package/dist/drizzle/migrations/0045_add-lots-offsets-availability-indexes.sql +5 -0
  18. package/dist/drizzle/migrations/0046_add-offers-active-tick-index.sql +1 -0
  19. package/dist/drizzle/migrations/0047_add-offers-book-winners-index.sql +1 -0
  20. package/dist/drizzle/migrations/0048_covering-indexes-for-winners-queries.sql +34 -0
  21. package/dist/drizzle/migrations/0049_contract-sync-v1.15.sql +305 -0
  22. package/dist/drizzle/migrations/meta/0031_snapshot.json +1652 -0
  23. package/dist/drizzle/migrations/meta/0033_snapshot.json +1658 -0
  24. package/dist/drizzle/migrations/meta/0036_snapshot.json +1864 -0
  25. package/dist/drizzle/migrations/meta/0037_snapshot.json +1876 -0
  26. package/dist/drizzle/migrations/meta/0038_snapshot.json +1882 -0
  27. package/dist/drizzle/migrations/meta/0039_snapshot.json +1960 -0
  28. package/dist/drizzle/migrations/meta/0040_snapshot.json +1912 -0
  29. package/dist/drizzle/migrations/meta/0041_snapshot.json +1912 -0
  30. package/dist/drizzle/migrations/meta/0042_snapshot.json +1882 -0
  31. package/dist/drizzle/migrations/meta/0043_snapshot.json +1909 -0
  32. package/dist/drizzle/migrations/meta/0044_snapshot.json +1853 -0
  33. package/dist/drizzle/migrations/meta/0045_snapshot.json +1921 -0
  34. package/dist/drizzle/migrations/meta/0046_snapshot.json +1966 -0
  35. package/dist/drizzle/migrations/meta/0047_snapshot.json +2005 -0
  36. package/dist/drizzle/migrations/meta/0048_snapshot.json +2035 -0
  37. package/dist/drizzle/migrations/meta/0049_snapshot.json +2035 -0
  38. package/dist/drizzle/migrations/meta/_journal.json +133 -0
  39. package/dist/evm/bytecode/morpho.txt +1 -1
  40. package/dist/index.browser.d.mts +784 -282
  41. package/dist/index.browser.d.mts.map +1 -1
  42. package/dist/index.browser.mjs +1516 -675
  43. package/dist/index.browser.mjs.map +1 -1
  44. package/dist/index.node.d.mts +1676 -602
  45. package/dist/index.node.d.mts.map +1 -1
  46. package/dist/index.node.mjs +10121 -5251
  47. package/dist/index.node.mjs.map +1 -1
  48. package/dist/register-otel-hook.js +7 -0
  49. package/dist/server-D4xxddev.js +9573 -0
  50. package/dist/server.js +9617 -0
  51. package/docs/integrator.md +14 -24
  52. package/package.json +36 -29
  53. package/dist/index.browser.d.ts +0 -5007
  54. package/dist/index.browser.d.ts.map +0 -1
  55. package/dist/index.browser.js +0 -5825
  56. package/dist/index.browser.js.map +0 -1
  57. package/dist/index.node.d.ts +0 -8263
  58. package/dist/index.node.d.ts.map +0 -1
  59. package/dist/index.node.js +0 -12566
  60. package/dist/index.node.js.map +0 -1
@@ -211,6 +211,139 @@
211
211
  "when": 1770992625797,
212
212
  "tag": "0030_remove_chain_id_from_offer",
213
213
  "breakpoints": true
214
+ },
215
+ {
216
+ "idx": 31,
217
+ "version": "7",
218
+ "when": 1771001221673,
219
+ "tag": "0031_sell-takeable-reindex",
220
+ "breakpoints": true
221
+ },
222
+ {
223
+ "idx": 32,
224
+ "version": "7",
225
+ "when": 1771100000000,
226
+ "tag": "0032_callback-type",
227
+ "breakpoints": true
228
+ },
229
+ {
230
+ "idx": 33,
231
+ "version": "7",
232
+ "when": 1771519002027,
233
+ "tag": "0033_obligation-id-bytes20",
234
+ "breakpoints": true
235
+ },
236
+ {
237
+ "idx": 34,
238
+ "version": "7",
239
+ "when": 1771900000000,
240
+ "tag": "0034_chain-checkpoints",
241
+ "breakpoints": true
242
+ },
243
+ {
244
+ "idx": 35,
245
+ "version": "7",
246
+ "when": 1772000000000,
247
+ "tag": "0035_chain-tip-hash-cas",
248
+ "breakpoints": true
249
+ },
250
+ {
251
+ "idx": 36,
252
+ "version": "7",
253
+ "when": 1772189863559,
254
+ "tag": "0036_pending-links",
255
+ "breakpoints": true
256
+ },
257
+ {
258
+ "idx": 37,
259
+ "version": "7",
260
+ "when": 1772634466586,
261
+ "tag": "0037_chain-finalized-anchor",
262
+ "breakpoints": true
263
+ },
264
+ {
265
+ "idx": 38,
266
+ "version": "7",
267
+ "when": 1772706940337,
268
+ "tag": "0038_add-obligation-rcf-threshold",
269
+ "breakpoints": true
270
+ },
271
+ {
272
+ "idx": 39,
273
+ "version": "7",
274
+ "when": 1773153355178,
275
+ "tag": "0039_add-offers-composite-indexes",
276
+ "breakpoints": true
277
+ },
278
+ {
279
+ "idx": 40,
280
+ "version": "7",
281
+ "when": 1773179648996,
282
+ "tag": "0040_drop-redundant-offers-indexes",
283
+ "breakpoints": true
284
+ },
285
+ {
286
+ "idx": 41,
287
+ "version": "7",
288
+ "when": 1773228000000,
289
+ "tag": "0041_add-group-winner-expression-index",
290
+ "breakpoints": true
291
+ },
292
+ {
293
+ "idx": 42,
294
+ "version": "7",
295
+ "when": 1773269433398,
296
+ "tag": "0042_contract-sync-v1.14",
297
+ "breakpoints": true
298
+ },
299
+ {
300
+ "idx": 43,
301
+ "version": "7",
302
+ "when": 1773243603318,
303
+ "tag": "0043_add-obligation-side-tick-index",
304
+ "breakpoints": true
305
+ },
306
+ {
307
+ "idx": 44,
308
+ "version": "7",
309
+ "when": 1773307797303,
310
+ "tag": "0044_index-audit-cleanup",
311
+ "breakpoints": true
312
+ },
313
+ {
314
+ "idx": 45,
315
+ "version": "7",
316
+ "when": 1773321900000,
317
+ "tag": "0045_add-lots-offsets-availability-indexes",
318
+ "breakpoints": true
319
+ },
320
+ {
321
+ "idx": 46,
322
+ "version": "7",
323
+ "when": 1773400929218,
324
+ "tag": "0046_add-offers-active-tick-index",
325
+ "breakpoints": true
326
+ },
327
+ {
328
+ "idx": 47,
329
+ "version": "7",
330
+ "when": 1773410997423,
331
+ "tag": "0047_add-offers-book-winners-index",
332
+ "breakpoints": true
333
+ },
334
+ {
335
+ "idx": 48,
336
+ "version": "7",
337
+ "when": 1773933600000,
338
+ "tag": "0048_covering-indexes-for-winners-queries",
339
+ "breakpoints": true
340
+ },
341
+ {
342
+ "idx": 49,
343
+ "version": "7",
344
+ "when": 1773933700000,
345
+ "tag": "0049_contract-sync-v1.15",
346
+ "breakpoints": true
214
347
  }
215
348
  ]
216
349
  }
@@ -1 +1 @@
1
- 0x60808060405234604e57600980546001600160a01b031916339081179091557f385bc760a35ad4b8b2c11c6a4c6d27daa5e72ce47836b34da36a3f1258ec45ec5f80a2613ccb90816100538239f35b5f80fdfe6102606040526004361015610012575f80fd5b5f6080525f3560e01c80631133e13e14612c5e57806312e8d59414612c3157806313af403514612bbf5780632ccb5f8714612ae15780632e63523f14612a6e57806334df29201461285a578063408bfb6b146127bf5780634decfa241461278d57806353a6332b1461275a5780635d23273f146126d157806365e4ad9e1461267a57806366a453f71461262057806371be9f41146113865780637aab85881461134a5780637c96c142146112e75780637cf43d8c146112b657806387cf3ef41461128c5780638da5cb5b14611262578063920e99841461122857806398017489146111bd5780639e90eb731461111b578063aab9c9e31461103c578063ac9650d814610f66578063ad092b0914610f3c578063adf51de114610e35578063b19805af14610dbb578063bd2d116514610cde578063c3fba21214610b65578063cc90010214610b0b578063cdb5661f14610a53578063d632fd5d14610a0a578063d881a443146109c2578063e29dfba814610976578063f246b87c146101c65763ffd389681461019f575f80fd5b346101c05760206101b86101b236612ef7565b9061372d565b604051908152f35b60805180fd5b346101c05760803660031901126101c0576004356001600160401b0381116101c0576101f6903690600401612d84565b6024356001600160401b0381116101c057366023820112156101c057806004013561022081612d6d565b9161022e6040519384612cca565b81835260246060602085019302820101903682116101c057602401915b81831061093a5750505061025d612ceb565b916064356001600160401b0381116101c05761027d903690600401612f0d565b60805194909391859061028f856133ec565b948560805152600360205260406080512090602081015151956102b187612d6d565b966102bf6040519889612cca565b8088526102ce601f1991612d6d565b01366020890137608051995b602083015180518c101561046f576102f48c600492612f85565b5196602060018060a01b0360408a0151166040519384809263501ad8ff60e11b82525afa918215610462578d9060805193610427575b5061033683918c612f85565b52608080518c90526002602090815290516040908190206001600160a01b038c81165f9081529184528282208c5190911682529092529020549761037a838a6133ba565b6a0c097ce7bc90715b34b9f160241b90049060200151610399916133ba565b6103af91670de0b6b3a764000090910490612fb5565b966103b990613396565b670ff59ee833b2ffff81019290831061040f57600192610407926a0c097ce7bc90715b34b9f160241b91610400916103fb91670ff59ee833b3000090046133ba565b612f99565b0490612fb5565b9a01996102da565b634e487b7160e01b6080515260116004526024608051fd5b9250506020823d821161045a575b8161044260209383612cca565b81010312610456578c61033692519261032a565b5f80fd5b3d9150610435565b6040513d608051823e3d90fd5b5099509197909593928760805152600160205260406080512060018060a01b0387165f5260205260405f2054936040880190815142118015610931575b156108ec578511156108875750670ff59ee833b30000935b8a81038b82110261081a575b6080519a8b5b85518d101561065c578c6104ed6105059e88612f85565b519d8e60406020820151910151159015011515613189565b60408e01518e90156105e857604061051e910151613396565b885f1981011161040f576001928f6020906a0c097ce7bc90715b34b9f160241b6105736103fb8f8f61056361056c9161055e6105819b5f19830190612fb5565b6136af565b91865190612f85565b51906133ba565b04818301525b015190612fb5565b9d604060208d015161059b858060a01b0391845190612f85565b515116910151908d608051526002602052604060805120848060a01b038d165f5260205260405f2090848060a01b03165f526020526105df60405f20918254613141565b9055019b6104d6565b916105f9602084015193518b612f85565b5190608051506a0c097ce7bc90715b34b9f160241b8402938085046a0c097ce7bc90715b34b9f160241b149015171561040f578f602090670de0b6b3a76400006106518d61064c6105819760019a6136af565b6133ba565b046040820152610579565b919289938b8a969360018f01610673878254612fb5565b90558160805152600160205260406080512060018060a01b0389165f5260205260405f206106a2878254613141565b905560405192606084526106b9606085018b612f3a565b9187602086015280820391110260408401527f72957b3b5072b650e89b97df2431fdcefe88da2a07c2d84753b042b51fa32d6d60018060a01b038916938033930390a46080515b865181101561074757806107416107196001938a612f85565b5160406020890151610733868060a01b0391845190612f85565b515116910151903390613a96565b01610700565b50909194938261078a575b8351610786908690610772908990309033906001600160a01b031661395c565b604051918291602083526020830190612f3a565b0390f35b333b156101c0576040516321589ad760e21b81526080600482015292839182916107e791906107bc608485018a612f3a565b6001600160a01b039092166024850152336044850152838203600319016064850152608051956136fc565b0381608051335af1801561046257610801575b8080610752565b60805161080d91612cca565b6080516101c057836107fa565b8860805152600160205260406080512060018060a01b0388165f5260205260405f2061084d8c83038d8411028254613141565b90556001600160801b036108726108698d84118e850302613a37565b828d5416613208565b166001600160801b03198b5416178a556104d0565b610892905142613141565b670214e8348c4f0000808202919082040361040f576103849004670de0b6b3a76400000180670de0b6b3a76400001161040f57670ff59ee833b30000811090670ff59ee833b300001802670ff59ee833b3000018936104c4565b60405162461bcd60e51b815260206004820152601c60248201527f706f736974696f6e206973206e6f74206c6971756964617461626c65000000006044820152606490fd5b508086116104ac565b6060833603126101c057602060609160405161095581612caf565b8535815282860135838201526040860135604082015281520192019161024b565b346101c05760403660031901126101c0576001600160a01b03610997612d01565b1660805152600460205260406080512060243560805152602052602060406080512054604051908152f35b346101c05760403660031901126101c0576109db612d43565b6004356080515260016020526040608051209060018060a01b03165f52602052602060405f2054604051908152f35b346101c05760403660031901126101c057610a23612d43565b600435608051526080516020526040608051209060018060a01b03165f52602052602060405f2054604051908152f35b346101c05760203660031901126101c05760405160c0908190610a768282612cca565b36903760043560805152600360205260036040608051200161ffff60405191548181168352818160101c166020840152818160201c166040840152818160301c166060840152818160401c16608084015260501c1660a0820152610ada8282612cca565b6040519081608051905b60068210610af157505050f35b60208060019261ffff865116815201930191019091610ae4565b346101c05760203660031901126101c0576004356080515260036020526080604081512080549060ff600260018301549201541690604051926001600160801b0381168452841c6020840152604083015215156060820152f35b346101c05760a03660031901126101c0576004356001600160401b0381116101c057610b95903690600401612d84565b610b9d612d43565b60443590610ba9612d17565b90610bb2612d2d565b916001600160a01b03811690610c1e903383148015610cb5575b610bd59061314e565b610bde876133ec565b809781608051526002602052604060805120855f5260205260405f2060018060a01b0387165f5260205260405f20610c17898254613141565b9055612fc2565b15610c7b57610c75946040519033825285602083015260018060a01b03851660408301527f626c0b2bb9d8e812f145a6a7bdb09fe8fb92c53781755f343d5fd65c7e27949a606060018060a01b03861693a4613a96565b60805180f35b60405162461bcd60e51b81526020600482015260126024820152712ab73432b0b63a343c903137b93937bbb2b960711b6044820152606490fd5b5060808051849052600660209081529051604090819020335f908152925290205460ff16610bcc565b346101c05760803660031901126101c0576004356001600160401b0381116101c057610d11610c75913690600401612d84565b610d19612d43565b60443591610d2e610d28612d17565b916133ec565b908160805152600260205260406080512060018060a01b0382165f5260205260405f2060018060a01b0384165f5260205260405f20610d6e858254612fb5565b905560408051338152602081018690526001600160a01b039283169392851692917f968f3d07613cff19e0b1a7b034a330cfc3c90e73c1112e14495b79f436a4a07491a43090339061395c565b346101c05760203660031901126101c057610dd4612d01565b610de960018060a01b03600954163314613108565b600a80546001600160a01b0319166001600160a01b039290921691821790556080517f9993507f53024702e2de1be66f6c48c8957ac708927b86b3bdf4e335f58694709080a260805180f35b346101c05760803660031901126101c057610e4e612d01565b602435610e59612ceb565b6064356001600160401b0381116101c057610e78903690600401612f0d565b9060018060a01b03851692836040518681527fc76f1b4fe4396ac07a9fa55a415d4ca430e72651d37d3401f3bed7cb13fc4f1260203392a3610ebb853388613a96565b6001600160a01b0316803b156101c057610f0293604051809581948293634963710d60e01b84526004840152886024840152606060448401526080519660648401916136fc565b0391608051905af1801561046257610f23575b50610c75913090339061395c565b608051610f2f91612cca565b6080516101c05782610f15565b346101c0576080513660031901126101c0576008546040516001600160a01b039091168152602090f35b346101c05760203660031901126101c0576004356001600160401b0381116101c057366023820112156101c05780600401356001600160401b0381116101c0573660248260051b840101116101c057906080519060421981360301915b83811015610c7557600581901b820160240135838112156101c05782016024810135906001600160401b0382116101c0576044019080360382136101c05780604051928337810160805181526080519180608051920390305af46110256136cd565b90156110345750600101610fc3565b602081519101fd5b346101c05760603660031901126101c057611055612d01565b602435907f2cb7a4fb320621d7b2977fde7313cc7cb328cc480110427bc681eb148ee39bfe60206044359261109560018060a01b03600a5416331461359b565b6110a260058611156135d8565b6110b5662386f26fc10000851115613614565b6110c664e8d4a51000850615613657565b60018060a01b03169283608051526007825261110e6110ea86604060805120612e66565b61ffff64e8d4a510008504169061ffff8084549260031b9316831b921b1916179055565b604051908152a360805180f35b346101c05760603660031901126101c057600435602435907f5d6479813177277ca6f0151919c3210569f698b78e2f3a9f6b5338b8c4dddc53602060443561116e60018060a01b03600a5416331461359b565b61117b60058611156135d8565b61118e662386f26fc10000821115613614565b61119f64e8d4a51000820615613657565b83608051526003825261110e6110ea86600360406080512001612e66565b346101c0576111cb36612ef7565b3360805152600460205260406080512082608051526020526040608051206111f4828254612fb5565b90556040519081527f322af69a57c61fbd5f2ea18d9a80f0028196950ffcd8bcbf333e84997994948260203392a360805180f35b346101c05760203660031901126101c0576004356001600160401b0381116101c0576101b861125d6020923690600401612d84565b6133ec565b346101c0576080513660031901126101c0576009546040516001600160a01b039091168152602090f35b346101c0576080513660031901126101c057600a546040516001600160a01b039091168152602090f35b346101c05760203660031901126101c057600435608051526003602052602060016040608051200154604051908152f35b346101c05760603660031901126101c057611300612d43565b611308612ceb565b906004356080515260026020526040608051209060018060a01b03165f5260205260405f209060018060a01b03165f52602052602060405f2054604051908152f35b346101c05760203660031901126101c0576001600160a01b0361136b612d01565b16608051526005602052602060406080512054604051908152f35b34610456576101c0366003190112610456576113a0612d2d565b60a435906001600160a01b03821682036104565760c4356001600160401b038111610456576113d3903690600401612eb1565b60e435916001600160a01b0383168303610456576001600160401b036101043511610456576101c06101043536036003190112610456576040516101c0526101c08051016101c05181106001600160401b0382111761260c5760405261010435600401356001600160401b038111610456576114589060043691610104350101612d84565b6101c05152602461010435013580151581036104565760206101c051015261148560446101043501612d59565b60406101c0510152606461010435013560606101c0510152608461010435013560806101c051015260a461010435013560a06101c051015260c461010435013560c06101c051015260e461010435013560e06101c0510152610104803501356101006101c05101526101246101043501356101206101c05101526101446101043501356101406101c05101526115216101646101043501612d59565b6101606101c05101526101846101043501356001600160401b038111610456576115549060043691610104350101612eb1565b6101806101c051015261156d6101a46101043501612d59565b6101c0516101a00152606036610123190112610456576040519361159085612caf565b6101243560ff811681036104565785526101443560208601526101643560408601526001600160401b036101a43511610456573660236101a435011215610456576115e16101a43560040135612d6d565b946115ef6040519687612cca565b60046101a4359081013580885260051b01602401602087013682116104565760246101a43501905b8282106125fc5750505060643560c0526044356101a05260243561010052600435610140526001600160a01b038316331480156125d0575b6116589061314e565b600260643515604435156024351560043515010101111561259657600160606101c051015160806101c05101519060a06101c05101511591159015010111156125515760c06101c051015142106125185760e06101c051015142116124e3576101c051604001516001600160a01b03848116911614612492575f6080602092604051848101907f5bcf4b2eaff7fcdeb49f0bda53026b9ebdd93db566fe4c447125cb899e598c90825261018435604082015260408152611719606082612cca565b519020604051858101907f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188252466040820152306060820152606081526117608582612cca565b51902090604051908682019261190160f01b8452602283015260428201526042815261178d606282612cca565b5190209060ff8151169060408682015191015191604051938452868401526040830152606082015282805260015afa15611fd4575f516117f5906001600160a01b038116906117dd821515613228565b506101c051604001516001600160a01b031614613228565b604051602080820152611910816118ea6118206101c051516101c06040850152610200840190613268565b60206101c05101511515606084015260018060a01b0360406101c051015116608084015260606101c051015160a084015260806101c051015160c084015260a06101c051015160e084015260c06101c051015161010084015260e06101c05101516101208401526101006101c05101516101408401526101206101c05101516101608401526101406101c051015161018084015260018060a01b036101606101c0510151166101a08401526101806101c0510151601f19601f1985840301016101c08501526132ea565b6101c0516101a001516001600160a01b03166101e083015203601f198101835282612cca565b60208151910120925f935b8651851015611989576001906119318689612f85565b518082101561196657604051916020830152604082015260408152611957606082612cca565b6020815191012094019361191b565b90604051916020830152604082015260408152611984606082612cca565b611957565b8590610184350361245d576101406101c051015160406101c051015160018060a01b03165f52600560205260405f205403612426576119cb6101c051516133ec565b6101e0526101e0515f52600360205260405f209160206101c051015115155f610240525f60e0525f610200525f610120525f610160525f146123d65760406101c051015160018060a01b0316936101606101c051015160018060a01b03166101806101c051015195610240529460e05285610200526101205261016052925b6101006101c05101516103de811161239d576509184e72a0008065048c27394fff611ab5611a87611b08956101ef036657b9cce20682ad02613b77565b670de0b6b3a763ffff81670de0b6b3a764000001910160011c6a0c097ce7bc90715b34b9f160241b016136af565b5f608052010402611ad860406101c051510151428103904210026101e05161372d565b908160206101c051015115155f610180525f60a0525f1461239457611afc91613141565b60a0525b60a051612fb5565b610220526004351561225857611b276102205161055e61014051613396565b6101a052611b416102205161055e60a051610140516133ba565b61010052611b79825461055e6001600160801b0380611b6d81611b668660801c6131ca565b95166131ca565b1692166101a0516133ba565b60c0525b6101c051606001511561219f576101c05160200151156121955761014051905b6101c0516040908101516001600160a01b03165f9081526004602052206101206101c05101515f52602052611bd760405f20928354612fb5565b809255611bed8260606101c0510151101561330e565b6101e0515f52600160205260405f2060018060a01b0361024051165f5260205260405f205415916101e0515f525f60205260405f2060018060a01b0361020051165f5260205260405f20541593838061218e575b15611fdf576101e0515f525f60205260405f2060018060a01b0361024051165f5260205260405f20611c7660c0518254612fb5565b90556101e0515f52600160205260405f2060018060a01b0361020051165f5260205260405f20611caa6101a0518254612fb5565b9055611cf0611cc7611cbd60c051613a37565b835460801c6131e8565b82546001600160801b031660809190911b6fffffffffffffffffffffffffffffffff1916178255565b6001600160801b03611d10611d076101a051613a37565b828454166131e8565b166001600160801b03198254161790555b60406101c051015160018060a01b03169260206101c05101511515946101206101c0510151916040519633885260208801526101405160408801526101005160608801526101a051608088015260c05160a088015260c087015260e086015260018060a01b03871661010086015261012085015261014084015260018060a01b0316917fc9a4977a7cf0f1512ef09958cb3657858e06b9f743f76e825e23c64d264db0dc6101606101e05192a46001600160a01b03169081611f58575b6101c05151516008546101005161014051611e399550611e1a936001600160a01b03908116931691611e0f91613141565b91610240519061395c565b6101c051515161010051610240519092916001600160a01b031661395c565b610120516001600160a01b031680611ec9575b50611e62610200516101e0516101c05151612fc2565b15611e8e5760806040516101405181526101005160208201526101a051604082015260c0516060820152f35b60405162461bcd60e51b815260206004820152601360248201527253656c6c657220697320756e6865616c74687960681b6044820152606490fd5b6101c05151813b15611f435760405180926338042f3760e01b82528180611f146101805195610160519060c051906101a0519061010051906101405190610200519060048901613345565b039161018051905af18015611f4a5715611e4c5761018051611f3591612cca565b61018051611f435780611e4c565b6101805180fd5b6040513d61018051823e3d90fd5b6101c0515191803b1561045657611fa55f9391849260405195868094819363400d6dff60e11b835260e0519060c051906101a0519061010051906101405190610240519060048901613345565b03925af1918215611fd457611e3992611fbf575b50611dde565b5f611fc991612cca565b5f6101805282611fb9565b6040513d5f823e3d90fd5b8380612186575b1561205557506101e0515f525f60205260405f2060018060a01b0361024051165f5260205260405f2061201c60c0518254612fb5565b90556101e0515f525f60205260405f2060018060a01b0361020051165f5260205260405f2061204e60c0518254613141565b9055611d21565b83158061217f575b156120c957506101e0515f52600160205260405f2060018060a01b0361024051165f5260205260405f206120956101a0518254613141565b90556101e0515f52600160205260405f2060018060a01b0361020051165f5260205260405f2061204e6101a0518254612fb5565b6101e0515f52600160205260405f2060018060a01b0361024051165f5260205260405f206120fb6101a0518254613141565b90556101e0515f525f60205260405f2060018060a01b0361020051165f5260205260405f2061212d60c0518254613141565b905561214a611cc761214060c051613a37565b835460801c613208565b6001600160801b0361216a6121616101a051613a37565b82845416613208565b166001600160801b0319825416179055611d21565b508461205d565b508415611fe6565b5084611c41565b6101005190611b9d565b6101c0516080015115612205576101c0516040908101516001600160a01b03165f9081526004602052206101206101c05101515f5260205260405f20906121ea6101a0518354612fb5565b8092556122008260806101c0510151101561330e565b611bed565b6101c0516040908101516001600160a01b03165f9081526004602052206101206101c05101515f5260205260405f209061224260c0518354612fb5565b8092556122008260a06101c0510151101561330e565b602435156122b95761227260a05161055e61010051613396565b6101a05261228c60a05161055e61022051610100516133ba565b610140526122b1825461055e6001600160801b0380611b6d81611b668660801c6131ca565b60c052611b7d565b6044351561231d57670de0b6b3a76400006122da610220516101a0516133ba565b0461014052670de0b6b3a76400006122f760a0516101a0516133ba565b04610100526122b1825461055e6001600160801b0380611b6d81611b668660801c6131ca565b612350825461055e6001600160801b038061234561233c8286166131ca565b9460801c6131ca565b1692166064356133ba565b6101a052670de0b6b3a764000061236d610220516101a0516133ba565b0461014052670de0b6b3a764000061238a60a0516101a0516133ba565b0461010052611b7d565b5060a052611b00565b60405162461bcd60e51b81526020600482015260116024820152707469636b206f7574206f662072616e676560781b6044820152606490fd5b6101c0516040810151610160808301516101808401516101a0909401516001600160a01b038a81166102405260e09690965292851661020052841661012052919091528116949316929050611a4a565b60405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21039b2b9b9b4b7b760891b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b6044820152606490fd5b60405162461bcd60e51b815260206004820152602360248201527f627579657220616e642073656c6c65722063616e6e6f74206265207468652073604482015262616d6560e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152600d60248201526c1bd999995c88195e1c1a5c9959609a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260116024820152701bd999995c881b9bdd081cdd185c9d1959607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f696e636f6e73697374656e74206f6666657220696e70757400000000000000006044820152606490fd5b60405162461bcd60e51b81526020600482015260126024820152711a5b98dbdb9cda5cdd195b9d081a5b9c1d5d60721b6044820152606490fd5b506001600160a01b0383165f90815260066020908152604080832033845290915290205460ff1661164f565b8135815260209182019101611617565b634e487b7160e01b5f52604160045260245ffd5b3461045657604036600319011261045657612639612d01565b6001600160a01b03165f90815260076020526040902060243560068110156104565761266a61ffff91602093612e66565b90549060031b1c16604051908152f35b3461045657604036600319011261045657612693612d01565b61269b612d43565b9060018060a01b03165f52600660205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610456576040366003190112610456576126ea612d01565b6024359081151580920361045657335f52600660205260405f2060018060a01b0382165f5260205260405f2060ff1981541660ff841617905560405191825260018060a01b0316907fffb9db33c892dd437c7bc38dd6b518266afce7e4ebbe6e5ec6d313cb362553f260203392a3005b34610456576020366003190112610456576004355f52600360205260206001600160801b0360405f205416604051908152f35b34610456576020366003190112610456576004355f526003602052602060ff600260405f200154166040519015158152f35b34610456575f36600319011261045657335f52600560205260405f20545f19430143811161284657604051906020820192835240604082015260408152612807606082612cca565b519020335f5260056020528060405f20556040519081527fac3cc8bf4b7f91b8e4387ddc50892ce98e15514edb89f53d2b5ecb7fbacd12ff60203392a2005b634e487b7160e01b5f52601160045260245ffd5b346104565760a0366003190112610456576004356001600160401b0381116104565761288a903690600401612d84565b60243590604435612899612d17565b916128a2612d2d565b6001600160a01b0390931693928290843387148015612a4c575b6128c59061314e565b15936128d5831586011515613189565b6128de846133ec565b92835f52600360205260405f2095155f14612a055750508354926129246001600160801b038061291b816129148960801c6131ca565b98166131ca565b169516876133ba565b925f19850197858911612846576129456129f99661055e60409b8b98612fb5565b965b825f525f602052895f20825f52602052895f20612965898254613141565b905560018101612976878254613141565b9055612987611cc76121408a613a37565b6001600160801b0361299b61216188613a37565b166001600160801b0319825416179055885191338352856020840152878a8401527fb0d1635dfdbe5c633488134986d37320944a02fc86bfcfecd77096755a30e104606060018060a01b03871694a4516001600160a01b0316613a96565b82519182526020820152f35b604097965092612a44869461055e6129f997949854916001600160801b0380612a3b612a328287166131ca565b9560801c6131ca565b169316906133ba565b968794612947565b505f87815260066020908152604080832033845290915290205460ff166128bc565b3461045657602036600319011261045657612a87612d01565b612a9c60018060a01b03600954163314613108565b600880546001600160a01b0319166001600160a01b039290921691821790557f8d0d37125715161666b8711c79ac750c3d48064efdcdb781d2613102fbfaddbd5f80a2005b34610456576060366003190112610456576004356001600160401b03811161045657612b14612bbd913690600401612d84565b60243590612b20612ceb565b612b29826133ec565b805f52600160205260405f2060018060a01b0383165f5260205260405f20612b52858254613141565b9055805f526003602052600160405f2001612b6e858254612fb5565b90556040518481526001600160a01b039092169133907f15abcbcae3c84bf0dd4d1f9b9593b93fd1008ba43286b5d963030916b438dca790602090a451309033906001600160a01b031661395c565b005b3461045657602036600319011261045657612bd8612d01565b60095490612bf0336001600160a01b03841614613108565b6001600160a01b03166001600160a01b03199190911681176009557f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f80a2005b34610456576020366003190112610456576004355f526003602052602060405f205460801c604051908152f35b34610456576060366003190112610456576004356001600160401b03811161045657612ca5612c936020923690600401612d84565b612c9b612ceb565b9060243590612fc2565b6040519015158152f35b606081019081106001600160401b0382111761260c57604052565b90601f801991011681019081106001600160401b0382111761260c57604052565b604435906001600160a01b038216820361045657565b600435906001600160a01b038216820361045657565b606435906001600160a01b038216820361045657565b608435906001600160a01b038216820361045657565b602435906001600160a01b038216820361045657565b35906001600160a01b038216820361045657565b6001600160401b03811161260c5760051b60200190565b9190916060818403126104565760405190612d9e82612caf565b8193612da982612d59565b835260208201356001600160401b03811161045657820181601f8201121561045657803590612dd782612d6d565b92612de56040519485612cca565b8284526020606081860194028301019181831161045657602001925b828410612e1c57505050506020830152604090810135910152565b606084830312610456576020606091604051612e3781612caf565b612e4087612d59565b81528287013583820152612e5660408801612d59565b6040820152815201930192612e01565b9190916006831015612e8257601e908360041c019260011b1690565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b03811161260c57601f01601f191660200190565b81601f8201121561045657803590612ec882612e96565b92612ed66040519485612cca565b8284526020838301011161045657815f926020809301838601378301015290565b6040906003190112610456576004359060243590565b9181601f84011215610456578235916001600160401b038311610456576020838186019501011161045657565b90602080835192838152019201905f5b818110612f575750505090565b9091926020606060019260408751805183528481015185840152015160408201520194019101919091612f4a565b8051821015612e825760209160051b010190565b906ec097ce7bc90715b34b9f0fffffffff820180921161284657565b9190820180921161284657565b929091825f52600160205260405f2060018060a01b0382165f5260205260405f20545f925f935b602087015180518610806130ff575b156130f2579061300a86600493612f85565b51604080820151905163501ad8ff60e11b81529360209185919082906001600160a01b03165afa928315611fd4575f936130bd575b50610400670de0b6b3a76400009160206a0c097ce7bc90715b34b9f160241b6130a16130ab978d5f526002845260405f2060018060a01b038d165f52845260405f2060018060a01b0386511660018060a01b03165f52845260405f20546133ba565b04910151906133ba565b935f1981146128465760010193612fe9565b92506020833d82116130ea575b816130d760209383612cca565b810103126104565791519161040061303f565b3d91506130ca565b5093509450925050101590565b50838210612ff8565b1561310f57565b60405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606490fd5b9190820391821161284657565b1561315557565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b1561319057565b60405162461bcd60e51b8152602060048201526012602482015271125390d3d394d254d511539517d25394155560721b6044820152606490fd5b6001600160801b036001911601906001600160801b03821161284657565b906001600160801b03809116911601906001600160801b03821161284657565b906001600160801b03809116911603906001600160801b03821161284657565b1561322f57565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606490fd5b90606081019160018060a01b0381511682526020810151926060602084015283518091526020608084019401905f5b8181106132ad5750505060408091015191015290565b825180516001600160a01b039081168852602082810151818a01526040928301519091169188019190915260609096019590920191600101613297565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b1561331557565b60405162461bcd60e51b815260206004820152600860248201526718dbdb9cdd5b595960c21b6044820152606490fd5b939092613361613393989693979460e0875260e0870190613268565b6001600160a01b03909716602086015260408501526060840152608083015260a082015280830360c0909101526132ea565b90565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561284657565b8181029291811591840414171561284657565b908082146133e857546bffffffffffffffffffffffff169055565b5050565b6133f7304683613bf2565b6020815191012090815f52600360205260ff600260405f200154161561341b575090565b5f92835b6020830151805186101561349e576001600160a01b0390613441908790612f85565b515116906001600160a01b03168111156134605760019094019361341f565b60405162461bcd60e51b815260206004820152601660248201527518dbdb1b185d195c985b1cc81b9bdd081cdbdc9d195960521b6044820152606490fd5b50509250815f526003602052600260405f2001600160ff1982541617905560018060a01b038151165f5260076020526134e860405f20835f526003602052600360405f20016133cd565b6134f3304683613bf2565b80516001600160a01b03915f919060200182f5161561354c577fa5ffe53cdf879af6f5658e553012bc5f4ad0aee3c264091d69830add48f38c5a6135468392604051918291602083526020830190613268565b0390a290565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f20637265617465205353746f72653220636f6e747261636044820152601d60fa1b6064820152608490fd5b156135a257565b60405162461bcd60e51b815260206004820152600e60248201526d27b7363c903332b2a9b2ba3a32b960911b6044820152606490fd5b156135df57565b60405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606490fd5b1561361b57565b60405162461bcd60e51b81526020600482015260146024820152730a8e4c2c8d2dcce40cccaca40e8dede40d0d2ced60631b6044820152606490fd5b1561365e57565b60405162461bcd60e51b8152602060048201526024808201527f6665652073686f756c642062652061206d756c7469706c65206f66204645455f6044820152630535445560e41b6064820152608490fd5b81156136b9570490565b634e487b7160e01b5f52601260045260245ffd5b3d156136f7573d906136de82612e96565b916136ec6040519384612cca565b82523d5f602084013e565b606090565b908060209392818452848401375f828201840152601f01601f1916010190565b906006811015612e825760051b0190565b5f526003602052600360405f2001604051905461ffff8116825261ffff8160101c16602083015261ffff8160201c16604083015261ffff8160301c16606083015261ffff8160401c16608083015261ffff60a083019160501c16815261379460c083612cca565b62ed4e008310156138e757506201518082101561385e575f906201518062ffffff8060ff855b16941691169261ffff6137cd828561371c565b51169264e8d4a5100084029380850464e8d4a51000149015171561284657600182018092116128465761ffff916138039161371c565b511664e8d4a5100081029080820464e8d4a510001490151715612846578461384c6138529261384085613846613858986138406133939c8c613141565b906133ba565b94613141565b90612fb5565b92613141565b906136af565b62093a808210156138845762093a80906201518062ffffff8060ff60015b9395936137ba565b62278d008210156138aa5762093a809062278d0062ffffff8060ff60025b95939561387c565b6276a7008210156138d0576276a7009062278d0062ffffff8060ff60035b9395936138a2565b62ed4e00906276a70062ffffff8060ff60046138c8565b905061ffff9150511664e8d4a5100081029080820464e8d4a5100014901517156128465790565b1561391557565b60405162461bcd60e51b81526020600482015260076024820152666e6f20636f646560c81b6044820152606490fd5b90816020910312610456575180151581036104565790565b905f809493819461396f853b151561390e565b6040516323b872dd60e01b602082019081526001600160a01b03958616602483015294909216604483015260648083019190915281526139b0608482612cca565b51925af16139bc6136cd565b9015611034578051908115918215613a1d575b5050156139d857565b60405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657246726f6d2072657475726e65642066616c736500000000006044820152606490fd5b613a309250602080918301019101613944565b5f806139cf565b6001600160801b038111613a51576001600160801b031690565b60405162461bcd60e51b815260206004820152601960248201527f75696e74323536206f766572666c6f77732075696e74313238000000000000006044820152606490fd5b5f929183613ae2613af08295613aae863b151561390e565b60405163a9059cbb60e01b602082019081526001600160a01b03909616602482015260448101919091529182906064820190565b03601f198101835282612cca565b51925af1613afc6136cd565b9015611034578051908115918215613b5d575b505015613b1857565b60405162461bcd60e51b815260206004820152601760248201527f7472616e736665722072657475726e65642066616c73650000000000000000006044820152606490fd5b613b709250602080918301019101613944565b5f80613b0f565b5f811215613ba357613b8a905f03613b77565b80156136b9576a0c097ce7bc90715b34b9f160241b0490565b670de0b6b3a764000067099e8db03256ce5d6704cf46d8192b672e8301059167099e8db03256ce5d83029003671bc16d674ec80000818002056729a2241af62c00008282020591010101901b90565b61339391926020603492604095865193613c0c8886612cca565b600b8552838501976a603f380380603f5f395ff360a81b8952805191613c4d83613c3f8882019789895285830190613268565b03601f198101855284612cca565b8151998a97518091888a015e870193868501526bffffffffffffffffffffffff199060601b1690830152518092605483015e01015f838201520301601f198101835282612cca56fea264697066735822122057a0a41d6c3ddb4ad88f836caf11aaf7105e0b1f72ccc7a77a21fa7b6f8a7d4d64736f6c634300081f0033
1
+ 0x60808060405234604e57600a80546001600160a01b031916339081179091557f385bc760a35ad4b8b2c11c6a4c6d27daa5e72ce47836b34da36a3f1258ec45ec5f80a2614aaa90816100538239f35b5f80fdfe6101806040526004361015610012575f80fd5b5f5f3560e01c80629a37531461345457806313af4035146133e25780631bd14388146133ad5780632cf0abe5146133895780632e63523f14613316578063373276f4146132465780634decfa241461321157806350b589031461309b5780635395d5471461305557806353a6332b1461302257806365e4ad9e14612fcb57806366a453f714612f815780636b7f2c2b14612d9e578063709f746114612d665780637597972e14612d405780637aab858814612d085780637cf43d8c14612cdb57806381ae352714612ca35780638233bbdf14612c0d57806387cf3ef414612be55780638da5cb5b14612bbd578063945c12e714612a945780639e90eb7314612992578063a464f28a14612931578063a5da13b114611f57578063aab9c9e314611e7d578063ac9650d814611da9578063ad092b0914611d80578063adf51de114611c72578063af91e61914610d1f578063b19805af14610caa578063b6a37a3b14610c5d578063b71bd73c14610bb5578063b7ae859f14610b96578063c312d39514610b1f578063c65803ae14610acd578063cc90010214610a6c578063cdb5661f14610a02578063d2392a53146109b8578063d50cc2f7146108d4578063d513f65814610712578063d6359bf41461064a578063d881a44314610623578063dc6728c61461031b578063e29dfba8146102d8578063f303ffd414610295578063f79066c1146102565763ffd389681461022a575f80fd5b3461025357604036600319011261025357602061024b6024356004356144f0565b604051908152f35b80fd5b503461025357602036600319011261025357600435906001600160401b03821161025357602061024b61028c36600486016135fe565b30904690614701565b5034610253576020366003190112610253576020906001600160801b03906040906001600160a01b036102c66134cb565b16815260028452205416604051908152f35b5034610253576040366003190112610253576020906040906001600160a01b036103006134cb565b16815260058352818120602435825283522054604051908152f35b5034610253576080366003190112610253576004356001600160401b03811161061f5761034c9036906004016135fe565b6044356024356001600160a01b0361036261350d565b169033821480156105fd575b61037790613e8f565b610380846138f9565b6020909401516001600160a01b039061039a90839061388d565b515116938086528560205260408620835f526020528460405f209160028301926001600160801b036103cc8686613ed7565b90549060031b1c166104126103e96103e48a84613faf565b614774565b6103f38888613ed7565b9091906001600160801b038084549260031b9316831b921b1916179055565b15806105f4575b6104da575b5060408051338152602081018890526001600160801b039661046b9695949093909290917f968f3d07613cff19e0b1a7b034a330cfc3c90e73c1112e14495b79f436a4a0749190a4613ed7565b90549060031b1c1682845260046020526040842054106104955761049291309033906148f4565b80f35b60405162461bcd60e51b815260206004820152601f60248201527f65786365656473206d617820636f6c6c61746572616c207065722075736572006044820152606490fd5b600a91949392506f010101010101010101010101010101016f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f600160ff93016f55555555555555555555555555555555815460801c6001600160801b0360018a1b1661054e8183178095906001600160801b0382549181199060801b169116179055565b1760011c1690036f33333333333333333333333333333333808260021c169116016001600160801b036f0fffffffffffffffffffffffffffffff8260041c16911601160260781c16116105a557909185905f61041e565b60405162461bcd60e51b815260206004820152602160248201527f746f6f206d616e7920636f6c6c61746572616c732070657220626f72726f77656044820152603960f91b6064820152608490fd5b50861515610419565b50818552600760209081526040808720335f908152925290205460ff1661036e565b5080fd5b503461025357604036600319011261025357602061024b6106426134e1565b6004356144c4565b5034610253576060366003190112610253576004356024356001600160a01b036106726134f7565b169033821480156106f0575b61068790613e8f565b8184526005602052604084208385526020526106a960408520548210156141e1565b8184526005602052604084208385526020528060408520556040519081527f67303572cb06b623144bb2e4fcfdb1b36a92349b64c64cb61e4487ac71ec9b8f60203392a480f35b50818452600760209081526040808620335f908152925290205460ff1661067e565b5034610253576020366003190112610253576004358160606040516107368161354d565b8281528160208201528260408201520152808252600160205261076560ff600260408520015460801c16613d0c565b6001600160a01b0316803b9161077a83613724565b92610788604051948561357c565b808452816020850180943c825183019260208401926020828603126108cc5751906001600160401b0382116108cc57019260808482031261061f57604051926107d08461354d565b6107dc602086016144b0565b845260408501516001600160401b0381116108d0576020908601019281601f850112156102535783519261080f8461359d565b9461081d604051968761357c565b84865260208087019560071b8201019384116108cc57602001935b838510610875576108718760808a8960208401526060810151604084015201516060820152604051918291602083526020830190613785565b0390f35b6080602086840301126108cc5760206080916040516108938161354d565b61089c886144b0565b81528288015183820152604088015160408201526108bc606089016144b0565b6060820152815201940193610838565b8280fd5b8380fd5b5034610253576020366003190112610253576001600160a01b036108f66134cb565b163381148015610996575b61090a90613e8f565b808252600660205260408220545f1943014381116109825760405190602082019283524060408201526040815261094260608261357c565b51902081835260066020528060408420556040519081527f22962f3ff1b1884ed4ea199c35d65c6016179c90fa19df7577c69db0afcb4e1660203392a380f35b634e487b7160e01b84526011600452602484fd5b50808252600760209081526040808420335f908152925290205460ff16610901565b50346102535760403660031901126102535760406109d46134e1565b91600435815280602052209060018060a01b03165f526020526020600160405f20015460801c604051908152f35b50346102535760203660031901126102535760e0604051610a23828261357c565b36903760043581526001602052610a3f60036040832001614455565b60405191825b60078210610a525760e084f35b60208060019261ffff865116815201930191019091610a45565b5034610253576020366003190112610253576040608091600435815260016020522060ff6001600160801b0382541691600260018201549101549060405193845260208401526001600160801b0381166040840152831c1615156060820152f35b503461025357606036600319011261025357600435906001600160401b038211610253576020610b15610b0336600486016135fe565b610b0b6134f7565b906024359061431c565b6040519015158152f35b503461025357604036600319011261025357610b396134cb565b7f4642227fc4a7b6757eb4eae374ba97f26a372b5d90bc2ff3d5a85d02c927cf91602060243592610b7560018060a01b03600a5416331461381b565b6001600160a01b03168085526003825260408086208590555193845292a280f35b503461025357602036600319011261025357602061024b600435614292565b503461025357604036600319011261025357600435670de0b6b3a764000003670de0b6b3a76400008111610c4957610bf8670de0b6b3a7640000916024356138c5565b04670de0b6b3a764000003670de0b6b3a76400008111610c49576a0c097ce7bc90715b34b9f160241b91508015610c355760209104604051908152f35b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b82526011600452602482fd5b5034610253576040366003190112610253576040610c796134e1565b91600435815280602052209060018060a01b03165f5260205260206001600160801b0360405f205416604051908152f35b503461025357602036600319011261025357610cc46134cb565b610cd960018060a01b03600a54163314613854565b600b80546001600160a01b0319166001600160a01b039290921691821790557f9993507f53024702e2de1be66f6c48c8957ac708927b86b3bdf4e335f58694708280a280f35b50346102535761016036600319011261025357610d3a6134e1565b60e052610d456134f7565b6064356001600160401b0381116108cc57610d6490369060040161373f565b90610d6d613523565b9060a4356001600160401b038111611c56576101a06003198236030112611c5657604051610100526101a061010051016101005181106001600160401b03821117611c5e5760405280600401356001600160401b038111611c5a57610dd890600436918401016135fe565b6101005152610de9602482016136ba565b6020610100510152610dfd60448201613539565b6040610100510152606481013560606101005101526084810135608061010051015260a481013560a061010051015260c481013560c061010051015260e481013560e061010051015261010481013561010080510152610e606101248201613539565b6101206101005101526101448101356001600160401b038111611c5a57610eb991610e94610184926004369184010161373f565b610140610100510152610eaa6101648201613539565b610160610100510152016136ba565b61010051610180015260603660c31901126108d05760405190606082018281106001600160401b03821117611c5e5760405260c43560ff81168103611c5a57825260e43560208301526101043560408301526001600160401b036101443511611c565736602361014435011215611c5657610f3a610144356004013561359d565b91610f48604051938461357c565b6101443560040135835260208301366024610144356004013560051b61014435010111611c525760246101443501905b6024610144356004013560051b6101443501018210611c4257505060e0516001600160a01b031633148015611c15575b610fb190613e8f565b60806101005101514210611bdc5760a06101005101514211611ba757610100516040015160e0516001600160a01b03908116911614611b5657856080602092604051848101907f5bcf4b2eaff7fcdeb49f0bda53026b9ebdd93db566fe4c447125cb899e598c9082526101243560408201526040815261103260608261357c565b519020604051858101907f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218825246604082015230606082015260608152611079858261357c565b51902090604051908682019261190160f01b845260228301526042820152604281526110a660628261357c565b5190209060ff8151169060408682015191015191604051938452868401526040830152606082015282805260015afa15611b4b57845161110e906001600160a01b038116906110f682151561417d565b5061010051604001516001600160a01b03161461417d565b60405160208101906020825261121b816111e661113c61010051516101a060408501526101e0840190613785565b60206101005101511515606084015260018060a01b036040610100510151166080840152606061010051015160a0840152608061010051015160c084015260a061010051015160e084015260c061010051015161010084015260e06101005101516101208401526101008051015161014084015260018060a01b0361012061010051015116610160840152610140610100510151601f19601f1985840301016101808501526141bd565b610100805161016001516001600160a01b03166101a084015251610180015115156101c083015203601f19810183528261357c565b5190209285935b835185101561126157611235858561388d565b51908181838111611256575b50508752602052600160408720940193611222565b925090505f80611241565b86935085906101243503611b16576101008051908101516040918201516001600160a01b0316865260066020529085205403611adf576112a461010051516138f9565b61010051604001519093906112c2906001600160a01b031685613d66565b6112ce60e05185613d66565b83855260016020526040852094602061010051015115158160a0525f14611a99576101005160408101516101208201516101409092015160e05160a05294959394936001600160a01b03918216939092909116905b60c061010051015181610140526103de8111611a6057611352611380916101ef036657b9cce20682ad026149f9565b670de0b6b3a763ffff81670de0b6b3a764000001910160011c6a0c097ce7bc90715b34b9f160241b016140cb565b9080611a4c57506509184e72a00065048c27394fff8192010402610140526113b760406101005151015142810390421002886144f0565b61010051602001515f6101205215611a3f576113e16113d98261014051613eca565b915b82613faf565b61010051602001515f60c05215611a2b57611407670de0b6b3a7640000916004356138c5565b0460c0525b61010051602001515f60805215611a1757611432670de0b6b3a7640000916004356138c5565b046080525b6101005160400151600160a01b60019003165f52600560205260405f206101005160e001515f5260205260405f2060043581549061147491613faf565b809155610100516060015181111561148b906141e1565b5f888152602081815260408083206001600160a01b038881168552925280832060a0519092168352909120600180830180549183018054845491959492936001600160801b0390811693918116926004359116818118818310021891908085189085110284186114fa81614774565b6115049086613d46565b6001600160801b03166001600160801b03198754161786556004359061152991613eca565b61153290614774565b86546001600160801b03169061154791614218565b6001600160801b03166001600160801b031987541617865561156882614774565b81546001600160801b03169061157d91613d46565b6001600160801b03166001600160801b0319825416179055600435906115a291613eca565b6115ab90614774565b85546001600160801b0316906115c091614218565b6001600160801b03166001600160801b03198654161785558d546001600160801b0316906115ed91613eca565b906115f791613eca565b83546001600160801b031661160b91613faf565b90546001600160801b031661161f91613faf565b61162890614774565b6001600160801b03166001600160801b03198c5416178b556101005161018001516119b6575b5050604061010051015160018060a01b0316602061010051015115159160e0610100510151906001600160801b038c54169160405194338652602086015260c05160408601526080516060860152600435608086015260018060a01b03871660a086015260c085015260e0840152610100830152887ff78378622fb9267b109ab14ff1424b9685ec70e150d17c3c0a68d8adc47b777161012060018060a01b0360e0511694a46001600160a01b03169283611941575b5061010051515160095460805160c051611756965061173d936001600160a01b0390811693169186916117379190613eca565b926148f4565b61010051515160805192906001600160a01b03166148f4565b6001600160a01b031690816118b6575b505061177a9060a05190610100515161431c565b1561187b576101005151610120805191516001600160a01b0316909152600360205251604090205460c0511161183f575461012080516101005151516001600160a01b0316905260026020525160409020546001600160801b039081169116116117fa57606060405160c051815260805160208201526004356040820152f35b60405162461bcd60e51b815260206004820152601760248201527f65786365656473206d617820746f74616c20756e6974730000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527365786365656473206d61782074616b6561626c6560601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601360248201527273656c6c657220697320756e6865616c74687960681b6044820152606490fd5b610100515190823b1561192c576118f79260405180809581946384fe304960e01b83526101205196600435906080519060c0519060a0519060048801614238565b039161012051905af1801561193357611911575b80611766565b6101205161191e9161357c565b6101205161192c578261190b565b6101205180fd5b6040513d61012051823e3d90fd5b610100515190843b156119b25761197e945f9283604051809881958294632273176b60e21b845260043590608051908c60c0519160048801614238565b03925af19283156119a7576117569315611704575f61199c9161357c565b5f6101205287611704565b6040513d5f823e3d90fd5b5f80fd5b61010051602001516001600160801b03929015611a0d57505416155b156119de57898061164e565b60405162461bcd60e51b815260206004820152600760248201526618dc9bdcdcd95960ca1b6044820152606490fd5b90505416156119d2565b611a23906004356149cf565b608052611437565b611a37906004356149cf565b60c05261140c565b6113e161014051916113db565b634e487b7160e01b81526012600452602490fd5b60405162461bcd60e51b81526020600482015260116024820152707469636b206f7574206f662072616e676560781b6044820152606490fd5b6101005160408101516101208201516101408301516101609093015160e0516001600160a01b0393841660a0529397509082169594928216939082169290911690611323565b60405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21039b2b9b9b4b7b760891b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b6044820152606490fd5b6040513d86823e3d90fd5b60405162461bcd60e51b815260206004820152602360248201527f627579657220616e642073656c6c65722063616e6e6f74206265207468652073604482015262616d6560e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152600d60248201526c1bd999995c88195e1c1a5c9959609a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260116024820152701bd999995c881b9bdd081cdd185c9d1959607a1b6044820152606490fd5b5060e0516001600160a01b03168652600760209081526040808820335f908152925290205460ff16610fa8565b8135815260209182019101610f78565b8680fd5b8480fd5b8580fd5b634e487b7160e01b86526041600452602486fd5b503461025357608036600319011261025357611c8c6134cb565b60243582611c986134f7565b6064356001600160401b0381116108cc57611cb79036906004016136f7565b919060018060a01b03861691826040518781527fc76f1b4fe4396ac07a9fa55a415d4ca430e72651d37d3401f3bed7cb13fc4f1260203392a3611cfb863389614821565b6001600160a01b0316803b15611c5657611d429385809460405196879586948593634963710d60e01b855260048501528b602485015260606044850152606484019161412e565b03925af18015611d7557611d60575b505061049291309033906148f4565b81611d6a9161357c565b6108cc57825f611d51565b6040513d84823e3d90fd5b50346102535780600319360112610253576009546040516001600160a01b039091168152602090f35b503461025357602036600319011261025357600435906001600160401b03821161025357366023830112156102535781600401356001600160401b03811161061f573660248260051b8501011161061f5791368190036042190190825b84811015611e795760248160051b8301013583811215611c565782016024810135906001600160401b038211611c5a576044018136038113611c5a57818692918392604051928392833781018381520390305af4611e6261414e565b9015611e715750600101611e06565b602081519101fd5b8380f35b503461025357606036600319011261025357611e976134cb565b602435907f2cb7a4fb320621d7b2977fde7313cc7cb328cc480110427bc681eb148ee39bfe602060443592611ed760018060a01b03600b54163314613fbc565b611ee46006861115613ffa565b611ef8611ef086614292565b851115614036565b611f0964e8d4a51000850615614073565b60018060a01b03169283865260088252611f4d611f2986604089206136c7565b61ffff64e8d4a510008504169061ffff8084549260031b9316831b921b1916179055565b604051908152a380f35b346119b25760c03660031901126119b2576001600160401b03600435116119b257600435360360806003198201126119b25760443590611f95613523565b9060a4356001600160401b0381116119b257611fb59036906004016136f7565b84936064359392908415861501156128f757611fde611fd9366004356004016135fe565b6138f9565b5f8181526001602090815260408083208383528184206001600160a01b0387168552909252822092999092908290612016868d6144c4565b6101605261016051936001840154948560801c805b61277b57506044600435013542119586159687612772575b1561272d5761016051612639575b5060643515801590612630575b6122a2575b50505050505060026001600160801b03910154169060018060a01b031696879160405190602435825288602083015287604083015261016051606083015260808201527f2f60e707f6f4c3c1a474f4842683ad1b54287bad6266ba695ae67d4e6b2a17dc60a03392a4612101856120f76120fc6120ea6024600435016004356004016140d5565b929033936024359161410a565b61411a565b614821565b81612132575b604085856121268161211d60043560040161411a565b309033906148f4565b82519182526020820152f35b333b156119b2576040519563ff66f22760e01b875260c0600488015261014487019360018060a01b03612169600435600401613539565b1660c48901526004356024013590602219018112156119b25760043501602460048201359101946001600160401b0382116119b2578160071b360386136119b2579080899596949392608060e488015252610164850193905f5b81811061224657505050915f9461221a9285946044600435013561010487015260646004350135610124870152602435602487015289604487015288606487015260848601526003198584030160a486015261412e565b038183335af19283156119a757604093612236575b8080612107565b5f6122409161357c565b5f61222f565b91969550919293608080600192838060a01b036122628b613539565b16815260208a0135602082015260408a01356040820152838060a01b0361228b60608c01613539565b1660608201520197019101918995969493926121c3565b8160406122cc6122c3989e94959697986024600435016004356004016140d5565b6024359161410a565b01359111156125d857925b1561258057506123076a0c097ce7bc90715b34b9f160241b6123016122fc868f6138c5565b613f93565b046138a1565b90825f1981011161256c5761232a836123258f945f19830190613faf565b6140cb565b9a5b61240e575b505050506001600160801b03916002918361236b81612354602435878601613ed7565b90549060031b1c166123658d614774565b90613d46565b61237d816103f3602435888701613ed7565b161580612405575b6123cb575b600182016123998a8254613faf565b90556001846123b56123aa8c614774565b828486015416613d46565b168519828401541617910155918a808080612063565b612400848060016024351b1619600184015460801c161660018301906001600160801b0382549181199060801b169116179055565b61238a565b50891515612385565b61243f6124469161243a8960206124326122c36024600435016004356004016140d5565b0135956144c4565b613eca565b91836138c5565b670de0b6b3a763ffff810180911161256c57670de0b6b3a76400009004670de0b6b3a76400000390670de0b6b3a7640000821161256c57612486906138a1565b5f198201919081831161256c576124a09261232591613faf565b90818a1192831593612515575b505050156124be5789808a81612331565b60405162461bcd60e51b815260206004820152602960248201527f7265636f7665727920636c6f736520666163746f7220636f6e646974696f6e73604482015268081d9a5bdb185d195960ba1b6064820152608490fd5b6125559293506a0c097ce7bc90715b34b9f160241b612301612325926001600160801b0361254860243560028b01613ed7565b90549060031b1c166138c5565b6064600435013591808203911102108a80806124ad565b634e487b7160e01b5f52601160045260245ffd5b999a50670de0b6b3a7640000612598836064356138c5565b04906a0c097ce7bc90715b34b9f160241b8202918083046a0c097ce7bc90715b34b9f160241b149015171561256c576125d2848e936140cb565b9b61232c565b670de0b6b3a763ffff19810181811161256c57612608610384916126026044600435013542613eca565b906138c5565b04670de0b6b3a76400000180670de0b6b3a76400001161256c578181109082180218926122d7565b5082151561205e565b6126536001600160801b0391828061016051169116613d46565b166001600160801b03196001870154161760018601556001600160801b0387541660028801906001600160801b038254166001600160801b0303906001600160801b03821161256c576123256126bf926001600160801b036126b86101605185613eca565b91166138c5565b6001600160801b03036001600160801b03811161256c576126e76001600160801b0391614774565b166001600160801b03198254161790556001600160801b0361271761270e61016051614774565b828a5416613d46565b166001600160801b03198854161787558e612051565b60405162461bcd60e51b815260206004820152601c60248201527f706f736974696f6e206973206e6f74206c6971756964617461626c65000000006044820152606490fd5b50828211612043565b6004926127a96127a46127956024873501873588016140d5565b91903692861e60ff039161410a565b6135b4565b606081015160405163501ad8ff60e11b81529591929160209187919082906001600160a01b03165afa9485156119a7575f956128c4575b50602435831e60ff03146128bb575b612800831e60ff0360028a01613ed7565b90549060031b1c6001600160801b03169061281b86836138c5565b6a0c097ce7bc90715b34b9f160241b9004602084015161283a916138c5565b670de0b6b3a7640000900461284e91613faf565b94612858916138c5565b61286190613f93565b6a0c097ce7bc90715b34b9f160241b9004906040015190612881906138a1565b5f198201919081831161256c5761289b9261232591613faf565b80610160510390610160511102610160526001811e60ff031b188061202b565b955083956127ef565b9094506020813d82116128ef575b816128df6020938361357c565b810103126119b25751935f6127e0565b3d91506128d2565b60405162461bcd60e51b81526020600482015260126024820152711a5b98dbdb9cda5cdd195b9d081a5b9c1d5d60721b6044820152606490fd5b346119b25760603660031901126119b25761294a6134e1565b6004355f525f60205260405f209060018060a01b03165f5260205260206001600160801b0361298260405f2060026044359101613ed7565b90549060031b1c16604051908152f35b346119b25760603660031901126119b257600435602435906044356129c260018060a01b03600b54163314613fbc565b6129cf6006841115613ffa565b6129e36129db84614292565b821115614036565b6129f464e8d4a51000820615614073565b815f52600160205260ff600260405f20015460801c1615612a565760207f5d6479813177277ca6f0151919c3210569f698b78e2f3a9f6b5338b8c4dddc5391835f5260018252612a4d611f2986600360405f20016136c7565b604051908152a3005b60405162461bcd60e51b81526020600482015260166024820152751bd89b1a59d85d1a5bdb881b9bdd0818dc99585d195960521b6044820152606490fd5b346119b25760603660031901126119b2576004356001600160401b0381116119b257612ac7612b999136906004016135fe565b602435906001600160a01b03612adb6134f7565b163381148015612b9b575b612aef90613e8f565b612af8826138f9565b612b0184614774565b815f525f60205260405f20835f526020526001600160801b03612b2e600160405f20019282845416613d46565b166001600160801b0319825416179055805f526001602052600160405f2001612b58858254613faf565b90556040518481527f15abcbcae3c84bf0dd4d1f9b9593b93fd1008ba43286b5d963030916b438dca760203392a451309033906001600160a01b03166148f4565b005b505f81815260076020908152604080832033845290915290205460ff16612ae6565b346119b2575f3660031901126119b257600a546040516001600160a01b039091168152602090f35b346119b2575f3660031901126119b257600b546040516001600160a01b039091168152602090f35b346119b25760403660031901126119b257612c266134cb565b602435906001600160801b0382168092036119b25760207f57f327400e3c54d52ff23ee2d1933a2228f6e03047148e80ffcf1353db17c43a91612c7460018060a01b03600a5416331461381b565b6001600160a01b03165f8181526002835260409081902080546001600160801b031916861790555193845292a2005b346119b25760203660031901126119b2576001600160a01b03612cc46134cb565b165f526003602052602060405f2054604051908152f35b346119b25760203660031901126119b2576004355f5260016020526020600160405f200154604051908152f35b346119b25760203660031901126119b2576001600160a01b03612d296134cb565b165f526006602052602060405f2054604051908152f35b346119b25760403660031901126119b257602061024b612d5e6134e1565b600435613ef3565b346119b25760203660031901126119b2576001600160a01b03612d876134cb565b165f526004602052602060405f2054604051908152f35b346119b25760a03660031901126119b2576004356001600160401b0381116119b257612dce9036906004016135fe565b604435602435612ddc61350d565b90612de5613523565b916001600160a01b03811690612e93903383148015612f5f575b612e0890613e8f565b612e11876138f9565b809760018060a01b03612e2887602084015161388d565b51511695825f525f60205260405f20865f5260205260405f209060028201612e80612e6c8c6001600160801b03612e5f8686613ed7565b90549060031b1c16613eca565b916103f384612e7a85614774565b92613ed7565b1580612f56575b612f1a575b505061431c565b15612ee05781612b99957f626c0b2bb9d8e812f145a6a7bdb09fe8fb92c53781755f343d5fd65c7e27949a606060405133815288602082015260018060a01b0388166040820152a4614821565b60405162461bcd60e51b81526020600482015260126024820152713ab73432b0b63a343c903137b93937bbb2b960711b6044820152606490fd5b6001600160801b0380600180612f4f9501931b1619825460801c16166001600160801b0382549181199060801b169116179055565b8980612e8c565b50891515612e87565b505f83815260076020908152604080832033845290915290205460ff16612dff565b346119b25760403660031901126119b257612f9a6134cb565b6001600160a01b03165f90815260086020526040902060243560078110156119b25761298261ffff916020936136c7565b346119b25760403660031901126119b257612fe46134cb565b612fec6134e1565b9060018060a01b03165f52600760205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b346119b25760203660031901126119b2576004355f52600160205260206001600160801b0360405f205416604051908152f35b346119b25760403660031901126119b25761306e6134e1565b6004355f525f60205260405f209060018060a01b03165f52602052602060405f205460801c604051908152f35b346119b25760803660031901126119b2576004356001600160401b0381116119b2576130ce612b999136906004016135fe565b602435906130da6134f7565b906130e361350d565b916001600160a01b03811633811480156131ef575b61310190613e8f565b61310a836138f9565b91825f52600160205261312160405f209184613d66565b61312a86614774565b835f525f60205260405f20835f526020526001600160801b0361315460405f209282845416613d46565b166001600160801b031982541617905560018101613173878254613eca565b90556001600160801b0361319261318988614774565b82845416613d46565b82546001600160801b031916911617905560408051338152602081018790526001600160a01b03861693917ffa82ce862d3f5db279ecf1aeb1448f39eea062e885036b3c146c6559a02c14d691a4516001600160a01b0316614821565b505f81815260076020908152604080832033845290915290205460ff166130f8565b346119b25760203660031901126119b2576004355f526001602052602060ff600260405f20015460801c166040519015158152f35b346119b25760603660031901126119b25761325f6134cb565b6132676134e1565b604435918215158093036119b2576001600160a01b03169033821480156132f4575b61329290613e8f565b815f52600760205260405f2060018060a01b0382165f5260205260405f2060ff1981541660ff851617905560405192835260018060a01b0316917f97fd1b548e470d1f0336319d52f890ded643a20d43bcf68f71683cafb9ae184860203392a4005b505f82815260076020908152604080832033845290915290205460ff16613289565b346119b25760203660031901126119b25761332f6134cb565b61334460018060a01b03600a54163314613854565b600980546001600160a01b0319166001600160a01b039290921691821790557f8d0d37125715161666b8711c79ac750c3d48064efdcdb781d2613102fbfaddbd5f80a2005b346119b25760403660031901126119b257612b996133a56134e1565b600435613d66565b346119b25760203660031901126119b2576004356001600160401b0381116119b25761024b611fd960209236906004016135fe565b346119b25760203660031901126119b2576133fb6134cb565b600a5490613413336001600160a01b03841614613854565b6001600160a01b03166001600160a01b0319919091168117600a557f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f80a2005b346119b25760403660031901126119b25761346d6134cb565b7fdedc68213d2e0a4674bc0a327ac6a9aa041d1845d2d593eb8053aadd3561fcca6020602435926134a960018060a01b03600a5416331461381b565b6001600160a01b03165f818152600483526040908190208590555193845292a2005b600435906001600160a01b03821682036119b257565b602435906001600160a01b03821682036119b257565b604435906001600160a01b03821682036119b257565b606435906001600160a01b03821682036119b257565b608435906001600160a01b03821682036119b257565b35906001600160a01b03821682036119b257565b608081019081106001600160401b0382111761356857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761356857604052565b6001600160401b0381116135685760051b60200190565b91908260809103126119b2576040516135cc8161354d565b60606135f98183956135dd81613539565b8552602081013560208601526040810135604086015201613539565b910152565b9190916080818403126119b257604051906136188261354d565b819361362382613539565b835260208201356001600160401b0381116119b257820181601f820112156119b25780356136508161359d565b9261365e604051948561357c565b81845260208085019260071b840101928184116119b257602001915b8383106136a0575050505060609182916020850152604081013560408501520135910152565b60206080916136af84866135b4565b81520192019161367a565b359081151582036119b257565b91909160078310156136e357601e908360041c019260011b1690565b634e487b7160e01b5f52603260045260245ffd5b9181601f840112156119b2578235916001600160401b0383116119b257602083818601950101116119b257565b6001600160401b03811161356857601f01601f191660200190565b81601f820112156119b25780359061375682613724565b92613764604051948561357c565b828452602083830101116119b257815f926020809301838601378301015290565b90608081019160018060a01b038151168252602081015192608060208401528351809152602060a084019401905f5b8181106137d4575050506060816040829301516040850152015191015290565b825180516001600160a01b039081168852602082810151818a0152604080840151908a015260609283015190911691880191909152608090960195909201916001016137b4565b1561382257565b60405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606490fd5b1561385b57565b60405162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b6044820152606490fd5b80518210156136e35760209160051b010190565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561256c57565b8181029291811591840414171561256c57565b908082146138f557546dffffffffffffffffffffffffffff169055565b5050565b613904304683614701565b90815f52600160205260ff600260405f20015460801c1615613924575090565b9091602082019081515115613cd657608082515111613c9a575f939284916a0c097ce7bc90715b34b9f160241b916703782dace9d9000091845b865180518a1015613b34576001600160a01b039061397d908b9061388d565b515116906001600160a01b0316811115613af657602061399e8a895161388d565b510151670de0b6b3a76400008111613ac15760406139bd8b8a5161388d565b51015190670de0b6b3a76400000390670de0b6b3a7640000821161256c57818602868104831489171561256c57670de0b6b3a76400009004670de0b6b3a764000003670de0b6b3a7640000811161256c578015610c3557870414908115613a66575b5015613a305760019098019761395e565b60405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21036b0bc2634b360911b6044820152606490fd5b90506040613a758b8a5161388d565b510151906706f05b59d3b20000808202919082040361256c57670de0b6b3a76400009004670de0b6b3a764000003670de0b6b3a7640000811161256c578015610c35578604145f613a1f565b60405162461bcd60e51b815260206004820152600d60248201526c0d8d8e8ec40e8dede40d0d2ced609b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527518dbdb1b185d195c985b1cc81b9bdd081cdbdc9d195960521b6044820152606490fd5b505096509350505050815f526001602052600260405f2001600160801b60ff60801b1982541617905560018060a01b038151165f526008602052613b8960405f20835f526001602052600360405f20016138d8565b613b916146d8565b604051613bf6602082019160208352613bbf81613bb16040820188613785565b03601f19810183528261357c565b60206040519384928280850197805191829101895e840190838201905f8252519283915e01015f815203601f19810183528261357c565b516001600160a01b03914691905ff51615613c4b577fed3d8f545536ac5508a20e9d2931713347900aec2fe8a57c469a0cd77b7d851b613c458392604051918291602083526020830190613785565b0390a290565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f20637265617465205353746f72653220636f6e747261636044820152601d60fa1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526014602482015273746f6f206d616e7920636f6c6c61746572616c7360601b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d6e6f20636f6c6c61746572616c7360901b6044820152606490fd5b15613d1357565b60405162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818dc99585d195960aa1b6044820152606490fd5b906001600160801b03809116911603906001600160801b03821161256c57565b805f526001602052613d8460ff600260405f20015460801c16613d0c565b805f525f60205260405f2060018060a01b0383165f5260205260405f209182548060801c91835f5260016020526001600160801b03600260405f20015416808403613dd2575b505050505050565b806001600160801b0303936001600160801b03851161256c576001600160801b0303936001600160801b03851161256c5781613e47613e67926123256060976001600160801b0380807fb3fc498e06bed85593c80f637153973a1ae55d2eb3000221a879058a863843549c16941691166138c5565b60809190911b6001600160801b0319166001600160801b03821617909755565b6040805133815260208101979097528601526001600160a01b031693a35f8080808080613dca565b15613e9657565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b9190820391821161256c57565b91909160808310156136e3576010908360011c019260041b1690565b90815f525f60205260405f209060018060a01b03165f5260205260405f2054908160801c905f5260016020526001600160801b03600260405f20015416808214613f85576001600160801b0303906001600160801b03821161256c576001600160801b03036001600160801b03811161256c57613f82926001600160801b0380806123259416941691166138c5565b90565b50506001600160801b031690565b906ec097ce7bc90715b34b9f0fffffffff820180921161256c57565b9190820180921161256c57565b15613fc357565b60405162461bcd60e51b815260206004820152600f60248201526e37b7363c903332b29039b2ba3a32b960891b6044820152606490fd5b1561400157565b60405162461bcd60e51b815260206004820152600d60248201526c0d2dcecc2d8d2c840d2dcc8caf609b1b6044820152606490fd5b1561403d57565b60405162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40e8dede40d0d2ced60931b6044820152606490fd5b1561407a57565b60405162461bcd60e51b8152602060048201526024808201527f6665652073686f756c642062652061206d756c7469706c65206f66204645455f6044820152630535445560e41b6064820152608490fd5b8115610c35570490565b903590601e19813603018212156119b257018035906001600160401b0382116119b257602001918160071b360383136119b257565b91908110156136e35760071b0190565b356001600160a01b03811681036119b25790565b908060209392818452848401375f828201840152601f01601f1916010190565b3d15614178573d9061415f82613724565b9161416d604051938461357c565b82523d5f602084013e565b606090565b1561418457565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606490fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b156141e857565b60405162461bcd60e51b815260206004820152600860248201526718dbdb9cdd5b595960c21b6044820152606490fd5b906001600160801b03809116911601906001600160801b03821161256c57565b92614253613f8297959296939660c0865260c0860190613785565b6001600160a01b03909616602085015260408401526060830152608082015280830360a091909101526141bd565b9060078110156136e35760051b0190565b6040519060e08201908282106001600160401b038311176135685766ffffffffffffff9261431792604052650cbba106e0008152650cbba106e000602082015265592167302000604082015266017b4260df10006060820152660470de4df8200060808201526608e1bc9bf0400060a08201526611c37937e0800060c0820152614281565b511690565b929161434590825f525f60205260405f2060018060a01b0382165f5260205260405f20926144c4565b925f926002600184015460801c9301925b8585108061444c575b1561444157801e60ff039461437886602086015161388d565b51606081015160405163501ad8ff60e11b815291929190602090829060049082906001600160a01b03165afa9081156119a7578789915f93614409575b5060019460206a0c097ce7bc90715b34b9f160241b6143f061440197966001600160801b03612548670de0b6b3a7640000986143fa98613ed7565b04910151906138c5565b0490613faf565b951b18614356565b93925050506020823d8211614439575b816144266020938361357c565b810103126119b2579051878760016143b5565b3d9150614419565b509392915050101590565b5080151561435f565b9061ffff60405192548181168452818160101c166020850152818160201c166040850152818160301c166060850152818160401c166080850152818160501c1660a085015260601c1660c08301526144ae60e08361357c565b565b51906001600160a01b03821682036119b257565b5f525f60205260405f209060018060a01b03165f526020526001600160801b03600160405f2001541690565b805f52600160205261450e60ff600260405f20015460801c16613d0c565b5f526001602052614524600360405f2001614455565b6301da9c008210156146b057620151808210156145ec575f906201518063ffffffff62ffffff60ff855b16941691169261ffff6145618285614281565b51169264e8d4a5100084029380850464e8d4a51000149015171561256c576001820180921161256c5761ffff9161459791614281565b511664e8d4a5100081029080820464e8d4a51000149015171561256c57846145da6145e092612602856145d46145e698612602613f829c8c613eca565b94613eca565b90613faf565b92613eca565b906140cb565b62093a808210156146165762093a80906201518063ffffffff62ffffff60ff60015b93959361454e565b62278d008210156146405762093a809062278d0063ffffffff62ffffff60ff60025b95939561460e565b6276a70082101561466a576276a7009062278d0063ffffffff62ffffff60ff60035b939593614638565b62ed4e00821015614694576276a7009062ed4e0063ffffffff62ffffff60ff60045b959395614662565b62ed4e00906301da9c0063ffffffff62ffffff60ff600561468c565b61ffff915060c001511664e8d4a5100081029080820464e8d4a51000149015171561256c5790565b604051906146e760408361357c565b600b82526a600b380380600b5f395ff360a81b6020830152565b6147096146d8565b9061472a604051613bbf81613bb16020820195602087526040830190613785565b51902060405191602083019360ff60f81b85526bffffffffffffffffffffffff199060601b166021840152603583015260558201526055815261476e60758261357c565b51902090565b6001600160801b03811161478e576001600160801b031690565b60405162461bcd60e51b815260206004820152601960248201527f75696e74323536206f766572666c6f77732075696e74313238000000000000006044820152606490fd5b156147da57565b60405162461bcd60e51b81526020600482015260076024820152666e6f20636f646560c81b6044820152606490fd5b908160209103126119b2575180151581036119b25790565b5f929183613bb161486d8295614839863b15156147d3565b60405163a9059cbb60e01b602082019081526001600160a01b03909616602482015260448101919091529182906064820190565b51925af161487961414e565b9015611e715780519081159182156148da575b50501561489557565b60405162461bcd60e51b815260206004820152601760248201527f7472616e736665722072657475726e65642066616c73650000000000000000006044820152606490fd5b6148ed9250602080918301019101614809565b5f8061488c565b905f8094938194614907853b15156147d3565b6040516323b872dd60e01b602082019081526001600160a01b039586166024830152949092166044830152606480830191909152815261494860848261357c565b51925af161495461414e565b9015611e715780519081159182156149b5575b50501561497057565b60405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657246726f6d2072657475726e65642066616c736500000000006044820152606490fd5b6149c89250602080918301019101614809565b5f80614967565b906149d9916138c5565b670de0b6b3a763ffff810180911161256c57670de0b6b3a7640000900490565b5f811215614a2557614a0c905f036149f9565b8015610c35576a0c097ce7bc90715b34b9f160241b0490565b670de0b6b3a764000067099e8db03256ce5d6704cf46d8192b672e8301059167099e8db03256ce5d83029003671bc16d674ec80000818002056729a2241af62c00008282020591010101901b9056fea26469706673582212209987a06b6ef8fc9f94d9e712602089dc3da724e0227199d93758be29e1ee91fd64736f6c634300081f0033