@ensuro/core 2.0.0-beta1 → 2.0.0-beta10

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