@ensuro/core 2.6.2 → 2.8.0-beta1

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 (79) hide show
  1. package/README.md +11 -5
  2. package/contracts/AccessManager.sol +3 -13
  3. package/contracts/EToken.sol +29 -95
  4. package/contracts/LPManualWhitelist.sol +11 -26
  5. package/contracts/LiquidityThresholdAssetManager.sol +10 -21
  6. package/contracts/Policy.sol +6 -17
  7. package/contracts/PolicyPool.sol +39 -91
  8. package/contracts/PolicyPoolComponent.sol +9 -32
  9. package/contracts/PremiumsAccount.sol +16 -47
  10. package/contracts/Reserve.sol +10 -16
  11. package/contracts/RiskModule.sol +22 -80
  12. package/contracts/SignedBucketRiskModule.sol +18 -80
  13. package/contracts/SignedQuoteRiskModule.sol +13 -44
  14. package/contracts/TieredSignedQuoteRiskModule.sol +7 -13
  15. package/contracts/TimeScaled.sol +8 -39
  16. package/contracts/TrustfulRiskModule.sol +13 -48
  17. package/contracts/interfaces/IAccessManager.sol +2 -11
  18. package/contracts/interfaces/IEToken.sol +1 -5
  19. package/contracts/interfaces/ILPWhitelist.sol +2 -10
  20. package/contracts/interfaces/IPolicyHolder.sol +2 -11
  21. package/contracts/interfaces/IPremiumsAccount.sol +1 -5
  22. package/contracts/migration/LPManualWhitelistV20.sol +3 -15
  23. package/contracts/migration/LPManualWhitelistV20Upgraded.sol +1 -5
  24. package/contracts/mocks/FixedRateVault.sol +1 -6
  25. package/contracts/mocks/PolicyHolderMock.sol +73 -29
  26. package/contracts/mocks/PolicyPoolComponentMock.sol +1 -3
  27. package/contracts/mocks/PolicyPoolMock.sol +8 -28
  28. package/contracts/mocks/RiskModuleMock.sol +3 -16
  29. package/contracts/mocks/TestNFT.sol +1 -1
  30. package/js/constants.js +8 -2
  31. package/js/deploy.js +65 -62
  32. package/js/enums.js +26 -8
  33. package/js/test-utils.js +105 -23
  34. package/js/utils.js +78 -28
  35. package/package.json +1 -1
  36. package/scripts/utils.sh +23 -12
  37. package/build/contracts/AccessManager.sol/AccessManager.json +0 -618
  38. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +0 -238
  39. package/build/contracts/EToken.sol/EToken.json +0 -1277
  40. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +0 -647
  41. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +0 -222
  42. package/build/contracts/Policy.sol/Policy.json +0 -10
  43. package/build/contracts/PolicyPool.sol/PolicyPool.json +0 -1416
  44. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +0 -332
  45. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +0 -970
  46. package/build/contracts/Reserve.sol/Reserve.json +0 -403
  47. package/build/contracts/RiskModule.sol/RiskModule.json +0 -559
  48. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +0 -1262
  49. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +0 -1110
  50. package/build/contracts/TieredSignedQuoteRiskModule.sol/TieredSignedQuoteRiskModule.json +0 -1316
  51. package/build/contracts/TimeScaled.sol/TimeScaled.json +0 -10
  52. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +0 -984
  53. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +0 -64
  54. package/build/contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json +0 -233
  55. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +0 -10
  56. package/build/contracts/interfaces/IAccessManager.sol/IAccessManager.json +0 -343
  57. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +0 -128
  58. package/build/contracts/interfaces/IEToken.sol/IEToken.json +0 -460
  59. package/build/contracts/interfaces/ILPWhitelist.sol/ILPWhitelist.json +0 -103
  60. package/build/contracts/interfaces/IPolicyHolder.sol/IPolicyHolder.json +0 -108
  61. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +0 -501
  62. package/build/contracts/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +0 -43
  63. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +0 -315
  64. package/build/contracts/interfaces/IRiskModule.sol/IRiskModule.json +0 -165
  65. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +0 -481
  66. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +0 -492
  67. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +0 -736
  68. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +0 -43
  69. package/build/contracts/mocks/IMintableERC20.sol/IMintableERC20.json +0 -47
  70. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +0 -180
  71. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +0 -228
  72. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +0 -54
  73. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +0 -721
  74. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +0 -92
  75. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +0 -783
  76. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +0 -343
  77. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +0 -388
  78. package/contracts/dependencies/ERC1967Proxy.sol +0 -19
  79. package/contracts/dependencies/IERC20Metadata.sol +0 -19
@@ -1,647 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "LPManualWhitelist",
4
- "sourceName": "contracts/LPManualWhitelist.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "contract IPolicyPool",
10
- "name": "policyPool_",
11
- "type": "address"
12
- }
13
- ],
14
- "stateMutability": "nonpayable",
15
- "type": "constructor"
16
- },
17
- {
18
- "anonymous": false,
19
- "inputs": [
20
- {
21
- "indexed": false,
22
- "internalType": "address",
23
- "name": "previousAdmin",
24
- "type": "address"
25
- },
26
- {
27
- "indexed": false,
28
- "internalType": "address",
29
- "name": "newAdmin",
30
- "type": "address"
31
- }
32
- ],
33
- "name": "AdminChanged",
34
- "type": "event"
35
- },
36
- {
37
- "anonymous": false,
38
- "inputs": [
39
- {
40
- "indexed": true,
41
- "internalType": "address",
42
- "name": "beacon",
43
- "type": "address"
44
- }
45
- ],
46
- "name": "BeaconUpgraded",
47
- "type": "event"
48
- },
49
- {
50
- "anonymous": false,
51
- "inputs": [
52
- {
53
- "indexed": true,
54
- "internalType": "enum IAccessManager.GovernanceActions",
55
- "name": "action",
56
- "type": "uint8"
57
- },
58
- {
59
- "indexed": false,
60
- "internalType": "address",
61
- "name": "value",
62
- "type": "address"
63
- }
64
- ],
65
- "name": "ComponentChanged",
66
- "type": "event"
67
- },
68
- {
69
- "anonymous": false,
70
- "inputs": [
71
- {
72
- "indexed": true,
73
- "internalType": "enum IAccessManager.GovernanceActions",
74
- "name": "action",
75
- "type": "uint8"
76
- },
77
- {
78
- "indexed": false,
79
- "internalType": "uint256",
80
- "name": "value",
81
- "type": "uint256"
82
- }
83
- ],
84
- "name": "GovernanceAction",
85
- "type": "event"
86
- },
87
- {
88
- "anonymous": false,
89
- "inputs": [
90
- {
91
- "indexed": false,
92
- "internalType": "uint8",
93
- "name": "version",
94
- "type": "uint8"
95
- }
96
- ],
97
- "name": "Initialized",
98
- "type": "event"
99
- },
100
- {
101
- "anonymous": false,
102
- "inputs": [
103
- {
104
- "indexed": false,
105
- "internalType": "address",
106
- "name": "provider",
107
- "type": "address"
108
- },
109
- {
110
- "components": [
111
- {
112
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
113
- "name": "deposit",
114
- "type": "uint8"
115
- },
116
- {
117
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
118
- "name": "withdraw",
119
- "type": "uint8"
120
- },
121
- {
122
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
123
- "name": "sendTransfer",
124
- "type": "uint8"
125
- },
126
- {
127
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
128
- "name": "receiveTransfer",
129
- "type": "uint8"
130
- }
131
- ],
132
- "indexed": false,
133
- "internalType": "struct LPManualWhitelist.WhitelistStatus",
134
- "name": "whitelisted",
135
- "type": "tuple"
136
- }
137
- ],
138
- "name": "LPWhitelistStatusChanged",
139
- "type": "event"
140
- },
141
- {
142
- "anonymous": false,
143
- "inputs": [
144
- {
145
- "indexed": false,
146
- "internalType": "address",
147
- "name": "account",
148
- "type": "address"
149
- }
150
- ],
151
- "name": "Paused",
152
- "type": "event"
153
- },
154
- {
155
- "anonymous": false,
156
- "inputs": [
157
- {
158
- "indexed": false,
159
- "internalType": "address",
160
- "name": "account",
161
- "type": "address"
162
- }
163
- ],
164
- "name": "Unpaused",
165
- "type": "event"
166
- },
167
- {
168
- "anonymous": false,
169
- "inputs": [
170
- {
171
- "indexed": true,
172
- "internalType": "address",
173
- "name": "implementation",
174
- "type": "address"
175
- }
176
- ],
177
- "name": "Upgraded",
178
- "type": "event"
179
- },
180
- {
181
- "inputs": [],
182
- "name": "GUARDIAN_ROLE",
183
- "outputs": [
184
- {
185
- "internalType": "bytes32",
186
- "name": "",
187
- "type": "bytes32"
188
- }
189
- ],
190
- "stateMutability": "view",
191
- "type": "function"
192
- },
193
- {
194
- "inputs": [],
195
- "name": "LEVEL1_ROLE",
196
- "outputs": [
197
- {
198
- "internalType": "bytes32",
199
- "name": "",
200
- "type": "bytes32"
201
- }
202
- ],
203
- "stateMutability": "view",
204
- "type": "function"
205
- },
206
- {
207
- "inputs": [],
208
- "name": "LEVEL2_ROLE",
209
- "outputs": [
210
- {
211
- "internalType": "bytes32",
212
- "name": "",
213
- "type": "bytes32"
214
- }
215
- ],
216
- "stateMutability": "view",
217
- "type": "function"
218
- },
219
- {
220
- "inputs": [],
221
- "name": "LEVEL3_ROLE",
222
- "outputs": [
223
- {
224
- "internalType": "bytes32",
225
- "name": "",
226
- "type": "bytes32"
227
- }
228
- ],
229
- "stateMutability": "view",
230
- "type": "function"
231
- },
232
- {
233
- "inputs": [],
234
- "name": "LP_WHITELIST_ADMIN_ROLE",
235
- "outputs": [
236
- {
237
- "internalType": "bytes32",
238
- "name": "",
239
- "type": "bytes32"
240
- }
241
- ],
242
- "stateMutability": "view",
243
- "type": "function"
244
- },
245
- {
246
- "inputs": [],
247
- "name": "LP_WHITELIST_ROLE",
248
- "outputs": [
249
- {
250
- "internalType": "bytes32",
251
- "name": "",
252
- "type": "bytes32"
253
- }
254
- ],
255
- "stateMutability": "view",
256
- "type": "function"
257
- },
258
- {
259
- "inputs": [],
260
- "name": "TWEAK_EXPIRATION",
261
- "outputs": [
262
- {
263
- "internalType": "uint40",
264
- "name": "",
265
- "type": "uint40"
266
- }
267
- ],
268
- "stateMutability": "view",
269
- "type": "function"
270
- },
271
- {
272
- "inputs": [
273
- {
274
- "internalType": "contract IEToken",
275
- "name": "",
276
- "type": "address"
277
- },
278
- {
279
- "internalType": "address",
280
- "name": "provider",
281
- "type": "address"
282
- },
283
- {
284
- "internalType": "uint256",
285
- "name": "",
286
- "type": "uint256"
287
- }
288
- ],
289
- "name": "acceptsDeposit",
290
- "outputs": [
291
- {
292
- "internalType": "bool",
293
- "name": "",
294
- "type": "bool"
295
- }
296
- ],
297
- "stateMutability": "view",
298
- "type": "function"
299
- },
300
- {
301
- "inputs": [
302
- {
303
- "internalType": "contract IEToken",
304
- "name": "",
305
- "type": "address"
306
- },
307
- {
308
- "internalType": "address",
309
- "name": "providerFrom",
310
- "type": "address"
311
- },
312
- {
313
- "internalType": "address",
314
- "name": "providerTo",
315
- "type": "address"
316
- },
317
- {
318
- "internalType": "uint256",
319
- "name": "",
320
- "type": "uint256"
321
- }
322
- ],
323
- "name": "acceptsTransfer",
324
- "outputs": [
325
- {
326
- "internalType": "bool",
327
- "name": "",
328
- "type": "bool"
329
- }
330
- ],
331
- "stateMutability": "view",
332
- "type": "function"
333
- },
334
- {
335
- "inputs": [
336
- {
337
- "internalType": "contract IEToken",
338
- "name": "",
339
- "type": "address"
340
- },
341
- {
342
- "internalType": "address",
343
- "name": "provider",
344
- "type": "address"
345
- },
346
- {
347
- "internalType": "uint256",
348
- "name": "",
349
- "type": "uint256"
350
- }
351
- ],
352
- "name": "acceptsWithdrawal",
353
- "outputs": [
354
- {
355
- "internalType": "bool",
356
- "name": "",
357
- "type": "bool"
358
- }
359
- ],
360
- "stateMutability": "view",
361
- "type": "function"
362
- },
363
- {
364
- "inputs": [],
365
- "name": "currency",
366
- "outputs": [
367
- {
368
- "internalType": "contract IERC20Metadata",
369
- "name": "",
370
- "type": "address"
371
- }
372
- ],
373
- "stateMutability": "view",
374
- "type": "function"
375
- },
376
- {
377
- "inputs": [],
378
- "name": "getWhitelistDefaults",
379
- "outputs": [
380
- {
381
- "components": [
382
- {
383
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
384
- "name": "deposit",
385
- "type": "uint8"
386
- },
387
- {
388
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
389
- "name": "withdraw",
390
- "type": "uint8"
391
- },
392
- {
393
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
394
- "name": "sendTransfer",
395
- "type": "uint8"
396
- },
397
- {
398
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
399
- "name": "receiveTransfer",
400
- "type": "uint8"
401
- }
402
- ],
403
- "internalType": "struct LPManualWhitelist.WhitelistStatus",
404
- "name": "",
405
- "type": "tuple"
406
- }
407
- ],
408
- "stateMutability": "view",
409
- "type": "function"
410
- },
411
- {
412
- "inputs": [
413
- {
414
- "components": [
415
- {
416
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
417
- "name": "deposit",
418
- "type": "uint8"
419
- },
420
- {
421
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
422
- "name": "withdraw",
423
- "type": "uint8"
424
- },
425
- {
426
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
427
- "name": "sendTransfer",
428
- "type": "uint8"
429
- },
430
- {
431
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
432
- "name": "receiveTransfer",
433
- "type": "uint8"
434
- }
435
- ],
436
- "internalType": "struct LPManualWhitelist.WhitelistStatus",
437
- "name": "defaultStatus",
438
- "type": "tuple"
439
- }
440
- ],
441
- "name": "initialize",
442
- "outputs": [],
443
- "stateMutability": "nonpayable",
444
- "type": "function"
445
- },
446
- {
447
- "inputs": [],
448
- "name": "lastTweak",
449
- "outputs": [
450
- {
451
- "internalType": "uint40",
452
- "name": "",
453
- "type": "uint40"
454
- },
455
- {
456
- "internalType": "uint56",
457
- "name": "",
458
- "type": "uint56"
459
- }
460
- ],
461
- "stateMutability": "view",
462
- "type": "function"
463
- },
464
- {
465
- "inputs": [],
466
- "name": "pause",
467
- "outputs": [],
468
- "stateMutability": "nonpayable",
469
- "type": "function"
470
- },
471
- {
472
- "inputs": [],
473
- "name": "paused",
474
- "outputs": [
475
- {
476
- "internalType": "bool",
477
- "name": "",
478
- "type": "bool"
479
- }
480
- ],
481
- "stateMutability": "view",
482
- "type": "function"
483
- },
484
- {
485
- "inputs": [],
486
- "name": "policyPool",
487
- "outputs": [
488
- {
489
- "internalType": "contract IPolicyPool",
490
- "name": "",
491
- "type": "address"
492
- }
493
- ],
494
- "stateMutability": "view",
495
- "type": "function"
496
- },
497
- {
498
- "inputs": [],
499
- "name": "proxiableUUID",
500
- "outputs": [
501
- {
502
- "internalType": "bytes32",
503
- "name": "",
504
- "type": "bytes32"
505
- }
506
- ],
507
- "stateMutability": "view",
508
- "type": "function"
509
- },
510
- {
511
- "inputs": [
512
- {
513
- "components": [
514
- {
515
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
516
- "name": "deposit",
517
- "type": "uint8"
518
- },
519
- {
520
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
521
- "name": "withdraw",
522
- "type": "uint8"
523
- },
524
- {
525
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
526
- "name": "sendTransfer",
527
- "type": "uint8"
528
- },
529
- {
530
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
531
- "name": "receiveTransfer",
532
- "type": "uint8"
533
- }
534
- ],
535
- "internalType": "struct LPManualWhitelist.WhitelistStatus",
536
- "name": "newStatus",
537
- "type": "tuple"
538
- }
539
- ],
540
- "name": "setWhitelistDefaults",
541
- "outputs": [],
542
- "stateMutability": "nonpayable",
543
- "type": "function"
544
- },
545
- {
546
- "inputs": [
547
- {
548
- "internalType": "bytes4",
549
- "name": "interfaceId",
550
- "type": "bytes4"
551
- }
552
- ],
553
- "name": "supportsInterface",
554
- "outputs": [
555
- {
556
- "internalType": "bool",
557
- "name": "",
558
- "type": "bool"
559
- }
560
- ],
561
- "stateMutability": "view",
562
- "type": "function"
563
- },
564
- {
565
- "inputs": [],
566
- "name": "unpause",
567
- "outputs": [],
568
- "stateMutability": "nonpayable",
569
- "type": "function"
570
- },
571
- {
572
- "inputs": [
573
- {
574
- "internalType": "address",
575
- "name": "newImplementation",
576
- "type": "address"
577
- }
578
- ],
579
- "name": "upgradeTo",
580
- "outputs": [],
581
- "stateMutability": "nonpayable",
582
- "type": "function"
583
- },
584
- {
585
- "inputs": [
586
- {
587
- "internalType": "address",
588
- "name": "newImplementation",
589
- "type": "address"
590
- },
591
- {
592
- "internalType": "bytes",
593
- "name": "data",
594
- "type": "bytes"
595
- }
596
- ],
597
- "name": "upgradeToAndCall",
598
- "outputs": [],
599
- "stateMutability": "payable",
600
- "type": "function"
601
- },
602
- {
603
- "inputs": [
604
- {
605
- "internalType": "address",
606
- "name": "provider",
607
- "type": "address"
608
- },
609
- {
610
- "components": [
611
- {
612
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
613
- "name": "deposit",
614
- "type": "uint8"
615
- },
616
- {
617
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
618
- "name": "withdraw",
619
- "type": "uint8"
620
- },
621
- {
622
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
623
- "name": "sendTransfer",
624
- "type": "uint8"
625
- },
626
- {
627
- "internalType": "enum LPManualWhitelist.WhitelistOptions",
628
- "name": "receiveTransfer",
629
- "type": "uint8"
630
- }
631
- ],
632
- "internalType": "struct LPManualWhitelist.WhitelistStatus",
633
- "name": "newStatus",
634
- "type": "tuple"
635
- }
636
- ],
637
- "name": "whitelistAddress",
638
- "outputs": [],
639
- "stateMutability": "nonpayable",
640
- "type": "function"
641
- }
642
- ],
643
- "bytecode": "0x60c0604052306080523480156200001557600080fd5b506040516200259638038062002596833981016040819052620000389162000196565b806001600160a01b038116620000bb5760405162461bcd60e51b815260206004820152603660248201527f506f6c696379506f6f6c436f6d706f6e656e743a20706f6c696379506f6f6c2060448201527f63616e6e6f74206265207a65726f20616464726573730000000000000000000060648201526084015b60405180910390fd5b620000c5620000d8565b6001600160a01b031660a05250620001c8565b600054610100900460ff1615620001425760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000b2565b60005460ff9081161462000194576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600060208284031215620001a957600080fd5b81516001600160a01b0381168114620001c157600080fd5b9392505050565b60805160a05161235b6200023b600039600081816102bf015281816106a501528181610a4001528181610b4d01528181610e3b01528181610f3e01528181611149015261168e0152600081816105220152818161056b015281816107b7015281816107f70152610886015261235b6000f3fe60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611ba3565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b960008051602061230683398151915281565b3480156101f557600080fd5b50610209610204366004611be2565b610518565b005b34801561021757600080fd5b50610170610226366004611bff565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c87565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611d2f565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d98565b610b2a565b3480156103f957600080fd5b50610170610408366004611bff565b610ca3565b34801561041957600080fd5b50610209610428366004611dce565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611dce565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e65565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e73565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b26000805160206122bf833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611ebf565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611dea565b0361065257506000805260fb60205260008051602061229f8339815191525460ff165b60015b81600281111561066757610667611dea565b149150505b9392505050565b6000805160206123068339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611f0b565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e73565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e6000805160206122bf833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611ebf565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b506000805160206122bf83398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611dea565b0361098a57506000805260fb60205260008051602061229f8339815191525462010000900460ff165b600181600281111561099e5761099e611dea565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611dea565b03610a0e57506000805260fb60205260008051602061229f833981519152546301000000900460ff165b6001816002811115610a2257610a22611dea565b149150505b949350505050565b6000805160206123068339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611f0b565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611f28565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611f0b565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611f28565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f5f565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611dea565b0361065257506000805260fb60205260008051602061229f83398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611f0b565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611f28565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f5f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611f0b565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb602052604080516080810190915260008051602061229f8339815191528054829060ff16600281111561102957611029611dea565b600281111561103a5761103a611dea565b81528154602090910190610100900460ff16600281111561105d5761105d611dea565b600281111561106e5761106e611dea565b8152815460209091019062010000900460ff16600281111561109257611092611dea565b60028111156110a3576110a3611dea565b815281546020909101906301000000900460ff1660028111156110c8576110c8611dea565b60028111156110d9576110d9611dea565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206123068339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611f0b565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361177d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fe4565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b6000805160206122bf83398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e838383611819565b6113c1611844565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61141361188f565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611dea565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611dea565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611dea565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611dea565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611ffd565b600054610100900460ff166115605760405162461bcd60e51b81526004016105609061201a565b6115686118d5565b6105fd8161190c565b60006115806020830183612065565b600281111561159157611591611dea565b141580156115c0575060006115ac6040830160208401612065565b60028111156115bd576115bd611dea565b14155b80156115ed575060006115d96060830160408401612065565b60028111156115ea576115ea611dea565b14155b801561161a575060006116066080830160608401612065565b600281111561161757611617611dea565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611f0b565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b6064820152608401610560565b6001600160a01b0381163b6117ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b6000805160206122bf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6118228361199f565b60008251118061182f5750805b15610c9e5761183e83836119df565b50505050565b60975460ff1661188d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561188d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118fc5760405162461bcd60e51b81526004016105609061201a565b611904611a04565b61188d611a2b565b600054610100900460ff166119335760405162461bcd60e51b81526004016105609061201a565b61193c81611571565b6000805260fb6020528060008051602061229f83398151915261195f8282612101565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a6000826040516119949291906121a7565b60405180910390a150565b6119a88161177d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061066c83836040518060600160405280602781526020016122df60279139611a5a565b600054610100900460ff1661188d5760405162461bcd60e51b81526004016105609061201a565b600054610100900460ff16611a525760405162461bcd60e51b81526004016105609061201a565b61188d611ad2565b6060600080856001600160a01b031685604051611a77919061224f565b600060405180830381855af49150503d8060008114611ab2576040519150601f19603f3d011682016040523d82523d6000602084013e611ab7565b606091505b5091509150611ac886838387611b05565b9695505050505050565b600054610100900460ff16611af95760405162461bcd60e51b81526004016105609061201a565b6097805460ff19169055565b60608315611b74578251600003611b6d576001600160a01b0385163b611b6d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b5081610a27565b610a278383815115611b895781518083602001fd5b8060405162461bcd60e51b8152600401610560919061226b565b600060208284031215611bb557600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611bf457600080fd5b813561066c81611bcd565b600080600060608486031215611c1457600080fd5b8335611c1f81611bcd565b92506020840135611c2f81611bcd565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c7f57611c7f611c40565b604052919050565b60008060408385031215611c9a57600080fd5b8235611ca581611bcd565b915060208381013567ffffffffffffffff80821115611cc357600080fd5b818601915086601f830112611cd757600080fd5b813581811115611ce957611ce9611c40565b611cfb601f8201601f19168501611c56565b91508082528784828501011115611d1157600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d4557600080fd5b8435611d5081611bcd565b93506020850135611d6081611bcd565b92506040850135611d7081611bcd565b9396929550929360600135925050565b600060808284031215611d9257600080fd5b50919050565b60008060a08385031215611dab57600080fd5b8235611db681611bcd565b9150611dc58460208501611d80565b90509250929050565b600060808284031215611de057600080fd5b61066c8383611d80565b634e487b7160e01b600052602160045260246000fd5b60038110611e1e57634e487b7160e01b600052602160045260246000fd5b9052565b611e2d828251611e00565b6020810151611e3f6020840182611e00565b506040810151611e526040840182611e00565b506060810151610c9e6060840182611e00565b608081016105128284611e22565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611f1d57600080fd5b815161066c81611bcd565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f7157600080fd5b6040516080810181811067ffffffffffffffff82111715611f9457611f94611c40565b6040528235611fa281611f52565b81526020830135611fb281611f52565b60208201526040830135611fc581611f52565b60408201526060830135611fd881611f52565b60608201529392505050565b600060208284031215611ff657600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611e22565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561207757600080fd5b813561066c81611f52565b6000813561051281611f52565b600382106120ad57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120e557634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b813561210c81611f52565b6003811061212a57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561214981611f52565b6003811061216757634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061219261218c60408401612082565b8261208f565b6107a96121a160608401612082565b826120c7565b6001600160a01b038316815260a0810182356121c281611f52565b6121cf6020840182611e00565b5060208301356121de81611f52565b6121eb6040840182611e00565b5060408301356121fa81611f52565b6122076060840182611e00565b50606083013561221681611f52565b6122236080840182611e00565b509392505050565b60005b8381101561224657818101518382015260200161222e565b50506000910152565b6000825161226181846020870161222b565b9190910192915050565b602081526000825180602084015261228a81604085016020870161222b565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220225c535a67fd49bf5058f40dd867184bd3d804b6d009dfb3463e8f1eec0f228564736f6c63430008100033",
644
- "deployedBytecode": "0x60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611ba3565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b960008051602061230683398151915281565b3480156101f557600080fd5b50610209610204366004611be2565b610518565b005b34801561021757600080fd5b50610170610226366004611bff565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c87565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611d2f565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d98565b610b2a565b3480156103f957600080fd5b50610170610408366004611bff565b610ca3565b34801561041957600080fd5b50610209610428366004611dce565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611dce565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e65565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e73565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b26000805160206122bf833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611ebf565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611dea565b0361065257506000805260fb60205260008051602061229f8339815191525460ff165b60015b81600281111561066757610667611dea565b149150505b9392505050565b6000805160206123068339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611f0b565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e73565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e6000805160206122bf833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611ebf565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b506000805160206122bf83398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611dea565b0361098a57506000805260fb60205260008051602061229f8339815191525462010000900460ff165b600181600281111561099e5761099e611dea565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611dea565b03610a0e57506000805260fb60205260008051602061229f833981519152546301000000900460ff165b6001816002811115610a2257610a22611dea565b149150505b949350505050565b6000805160206123068339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611f0b565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611f28565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611f0b565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611f28565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f5f565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611dea565b0361065257506000805260fb60205260008051602061229f83398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611f0b565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611f28565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f5f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611f0b565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb602052604080516080810190915260008051602061229f8339815191528054829060ff16600281111561102957611029611dea565b600281111561103a5761103a611dea565b81528154602090910190610100900460ff16600281111561105d5761105d611dea565b600281111561106e5761106e611dea565b8152815460209091019062010000900460ff16600281111561109257611092611dea565b60028111156110a3576110a3611dea565b815281546020909101906301000000900460ff1660028111156110c8576110c8611dea565b60028111156110d9576110d9611dea565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206123068339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611f0b565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361177d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fe4565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b6000805160206122bf83398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e838383611819565b6113c1611844565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61141361188f565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611dea565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611dea565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611dea565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611dea565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611ffd565b600054610100900460ff166115605760405162461bcd60e51b81526004016105609061201a565b6115686118d5565b6105fd8161190c565b60006115806020830183612065565b600281111561159157611591611dea565b141580156115c0575060006115ac6040830160208401612065565b60028111156115bd576115bd611dea565b14155b80156115ed575060006115d96060830160408401612065565b60028111156115ea576115ea611dea565b14155b801561161a575060006116066080830160608401612065565b600281111561161757611617611dea565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611f0b565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b6064820152608401610560565b6001600160a01b0381163b6117ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b6000805160206122bf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6118228361199f565b60008251118061182f5750805b15610c9e5761183e83836119df565b50505050565b60975460ff1661188d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561188d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118fc5760405162461bcd60e51b81526004016105609061201a565b611904611a04565b61188d611a2b565b600054610100900460ff166119335760405162461bcd60e51b81526004016105609061201a565b61193c81611571565b6000805260fb6020528060008051602061229f83398151915261195f8282612101565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a6000826040516119949291906121a7565b60405180910390a150565b6119a88161177d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061066c83836040518060600160405280602781526020016122df60279139611a5a565b600054610100900460ff1661188d5760405162461bcd60e51b81526004016105609061201a565b600054610100900460ff16611a525760405162461bcd60e51b81526004016105609061201a565b61188d611ad2565b6060600080856001600160a01b031685604051611a77919061224f565b600060405180830381855af49150503d8060008114611ab2576040519150601f19603f3d011682016040523d82523d6000602084013e611ab7565b606091505b5091509150611ac886838387611b05565b9695505050505050565b600054610100900460ff16611af95760405162461bcd60e51b81526004016105609061201a565b6097805460ff19169055565b60608315611b74578251600003611b6d576001600160a01b0385163b611b6d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b5081610a27565b610a278383815115611b895781518083602001fd5b8060405162461bcd60e51b8152600401610560919061226b565b600060208284031215611bb557600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611bf457600080fd5b813561066c81611bcd565b600080600060608486031215611c1457600080fd5b8335611c1f81611bcd565b92506020840135611c2f81611bcd565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c7f57611c7f611c40565b604052919050565b60008060408385031215611c9a57600080fd5b8235611ca581611bcd565b915060208381013567ffffffffffffffff80821115611cc357600080fd5b818601915086601f830112611cd757600080fd5b813581811115611ce957611ce9611c40565b611cfb601f8201601f19168501611c56565b91508082528784828501011115611d1157600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d4557600080fd5b8435611d5081611bcd565b93506020850135611d6081611bcd565b92506040850135611d7081611bcd565b9396929550929360600135925050565b600060808284031215611d9257600080fd5b50919050565b60008060a08385031215611dab57600080fd5b8235611db681611bcd565b9150611dc58460208501611d80565b90509250929050565b600060808284031215611de057600080fd5b61066c8383611d80565b634e487b7160e01b600052602160045260246000fd5b60038110611e1e57634e487b7160e01b600052602160045260246000fd5b9052565b611e2d828251611e00565b6020810151611e3f6020840182611e00565b506040810151611e526040840182611e00565b506060810151610c9e6060840182611e00565b608081016105128284611e22565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611f1d57600080fd5b815161066c81611bcd565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f7157600080fd5b6040516080810181811067ffffffffffffffff82111715611f9457611f94611c40565b6040528235611fa281611f52565b81526020830135611fb281611f52565b60208201526040830135611fc581611f52565b60408201526060830135611fd881611f52565b60608201529392505050565b600060208284031215611ff657600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611e22565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561207757600080fd5b813561066c81611f52565b6000813561051281611f52565b600382106120ad57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120e557634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b813561210c81611f52565b6003811061212a57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561214981611f52565b6003811061216757634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061219261218c60408401612082565b8261208f565b6107a96121a160608401612082565b826120c7565b6001600160a01b038316815260a0810182356121c281611f52565b6121cf6020840182611e00565b5060208301356121de81611f52565b6121eb6040840182611e00565b5060408301356121fa81611f52565b6122076060840182611e00565b50606083013561221681611f52565b6122236080840182611e00565b509392505050565b60005b8381101561224657818101518382015260200161222e565b50506000910152565b6000825161226181846020870161222b565b9190910192915050565b602081526000825180602084015261228a81604085016020870161222b565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220225c535a67fd49bf5058f40dd867184bd3d804b6d009dfb3463e8f1eec0f228564736f6c63430008100033",
645
- "linkReferences": {},
646
- "deployedLinkReferences": {}
647
- }