@ensuro/core 2.7.0 → 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 (77) 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 +23 -75
  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 +3 -13
  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/deploy.js +44 -39
  31. package/js/test-utils.js +30 -19
  32. package/js/utils.js +62 -29
  33. package/package.json +1 -1
  34. package/scripts/utils.sh +23 -12
  35. package/build/contracts/AccessManager.sol/AccessManager.json +0 -618
  36. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +0 -238
  37. package/build/contracts/EToken.sol/EToken.json +0 -1277
  38. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +0 -647
  39. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +0 -222
  40. package/build/contracts/Policy.sol/Policy.json +0 -10
  41. package/build/contracts/PolicyPool.sol/PolicyPool.json +0 -1416
  42. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +0 -332
  43. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +0 -970
  44. package/build/contracts/Reserve.sol/Reserve.json +0 -403
  45. package/build/contracts/RiskModule.sol/RiskModule.json +0 -559
  46. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +0 -1262
  47. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +0 -1110
  48. package/build/contracts/TieredSignedQuoteRiskModule.sol/TieredSignedQuoteRiskModule.json +0 -1316
  49. package/build/contracts/TimeScaled.sol/TimeScaled.json +0 -10
  50. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +0 -984
  51. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +0 -64
  52. package/build/contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json +0 -233
  53. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +0 -10
  54. package/build/contracts/interfaces/IAccessManager.sol/IAccessManager.json +0 -343
  55. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +0 -128
  56. package/build/contracts/interfaces/IEToken.sol/IEToken.json +0 -460
  57. package/build/contracts/interfaces/ILPWhitelist.sol/ILPWhitelist.json +0 -103
  58. package/build/contracts/interfaces/IPolicyHolder.sol/IPolicyHolder.json +0 -108
  59. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +0 -501
  60. package/build/contracts/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +0 -43
  61. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +0 -315
  62. package/build/contracts/interfaces/IRiskModule.sol/IRiskModule.json +0 -165
  63. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +0 -481
  64. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +0 -492
  65. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +0 -736
  66. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +0 -43
  67. package/build/contracts/mocks/IMintableERC20.sol/IMintableERC20.json +0 -47
  68. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +0 -180
  69. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +0 -319
  70. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +0 -54
  71. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +0 -721
  72. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +0 -92
  73. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +0 -783
  74. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +0 -343
  75. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +0 -388
  76. package/contracts/dependencies/ERC1967Proxy.sol +0 -19
  77. package/contracts/dependencies/IERC20Metadata.sol +0 -19
@@ -1,1416 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "PolicyPool",
4
- "sourceName": "contracts/PolicyPool.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "contract IAccessManager",
10
- "name": "access_",
11
- "type": "address"
12
- },
13
- {
14
- "internalType": "contract IERC20Metadata",
15
- "name": "currency_",
16
- "type": "address"
17
- }
18
- ],
19
- "stateMutability": "nonpayable",
20
- "type": "constructor"
21
- },
22
- {
23
- "anonymous": false,
24
- "inputs": [
25
- {
26
- "indexed": false,
27
- "internalType": "address",
28
- "name": "previousAdmin",
29
- "type": "address"
30
- },
31
- {
32
- "indexed": false,
33
- "internalType": "address",
34
- "name": "newAdmin",
35
- "type": "address"
36
- }
37
- ],
38
- "name": "AdminChanged",
39
- "type": "event"
40
- },
41
- {
42
- "anonymous": false,
43
- "inputs": [
44
- {
45
- "indexed": true,
46
- "internalType": "address",
47
- "name": "owner",
48
- "type": "address"
49
- },
50
- {
51
- "indexed": true,
52
- "internalType": "address",
53
- "name": "approved",
54
- "type": "address"
55
- },
56
- {
57
- "indexed": true,
58
- "internalType": "uint256",
59
- "name": "tokenId",
60
- "type": "uint256"
61
- }
62
- ],
63
- "name": "Approval",
64
- "type": "event"
65
- },
66
- {
67
- "anonymous": false,
68
- "inputs": [
69
- {
70
- "indexed": true,
71
- "internalType": "address",
72
- "name": "owner",
73
- "type": "address"
74
- },
75
- {
76
- "indexed": true,
77
- "internalType": "address",
78
- "name": "operator",
79
- "type": "address"
80
- },
81
- {
82
- "indexed": false,
83
- "internalType": "bool",
84
- "name": "approved",
85
- "type": "bool"
86
- }
87
- ],
88
- "name": "ApprovalForAll",
89
- "type": "event"
90
- },
91
- {
92
- "anonymous": false,
93
- "inputs": [
94
- {
95
- "indexed": true,
96
- "internalType": "address",
97
- "name": "beacon",
98
- "type": "address"
99
- }
100
- ],
101
- "name": "BeaconUpgraded",
102
- "type": "event"
103
- },
104
- {
105
- "anonymous": false,
106
- "inputs": [
107
- {
108
- "indexed": true,
109
- "internalType": "enum IAccessManager.GovernanceActions",
110
- "name": "action",
111
- "type": "uint8"
112
- },
113
- {
114
- "indexed": false,
115
- "internalType": "address",
116
- "name": "value",
117
- "type": "address"
118
- }
119
- ],
120
- "name": "ComponentChanged",
121
- "type": "event"
122
- },
123
- {
124
- "anonymous": false,
125
- "inputs": [
126
- {
127
- "indexed": true,
128
- "internalType": "contract IPolicyPoolComponent",
129
- "name": "component",
130
- "type": "address"
131
- },
132
- {
133
- "indexed": false,
134
- "internalType": "enum PolicyPool.ComponentKind",
135
- "name": "kind",
136
- "type": "uint8"
137
- },
138
- {
139
- "indexed": false,
140
- "internalType": "enum PolicyPool.ComponentStatus",
141
- "name": "newStatus",
142
- "type": "uint8"
143
- }
144
- ],
145
- "name": "ComponentStatusChanged",
146
- "type": "event"
147
- },
148
- {
149
- "anonymous": false,
150
- "inputs": [
151
- {
152
- "indexed": false,
153
- "internalType": "uint8",
154
- "name": "version",
155
- "type": "uint8"
156
- }
157
- ],
158
- "name": "Initialized",
159
- "type": "event"
160
- },
161
- {
162
- "anonymous": false,
163
- "inputs": [
164
- {
165
- "indexed": true,
166
- "internalType": "contract IRiskModule",
167
- "name": "riskModule",
168
- "type": "address"
169
- },
170
- {
171
- "components": [
172
- {
173
- "internalType": "uint256",
174
- "name": "id",
175
- "type": "uint256"
176
- },
177
- {
178
- "internalType": "uint256",
179
- "name": "payout",
180
- "type": "uint256"
181
- },
182
- {
183
- "internalType": "uint256",
184
- "name": "premium",
185
- "type": "uint256"
186
- },
187
- {
188
- "internalType": "uint256",
189
- "name": "jrScr",
190
- "type": "uint256"
191
- },
192
- {
193
- "internalType": "uint256",
194
- "name": "srScr",
195
- "type": "uint256"
196
- },
197
- {
198
- "internalType": "uint256",
199
- "name": "lossProb",
200
- "type": "uint256"
201
- },
202
- {
203
- "internalType": "uint256",
204
- "name": "purePremium",
205
- "type": "uint256"
206
- },
207
- {
208
- "internalType": "uint256",
209
- "name": "ensuroCommission",
210
- "type": "uint256"
211
- },
212
- {
213
- "internalType": "uint256",
214
- "name": "partnerCommission",
215
- "type": "uint256"
216
- },
217
- {
218
- "internalType": "uint256",
219
- "name": "jrCoc",
220
- "type": "uint256"
221
- },
222
- {
223
- "internalType": "uint256",
224
- "name": "srCoc",
225
- "type": "uint256"
226
- },
227
- {
228
- "internalType": "contract IRiskModule",
229
- "name": "riskModule",
230
- "type": "address"
231
- },
232
- {
233
- "internalType": "uint40",
234
- "name": "start",
235
- "type": "uint40"
236
- },
237
- {
238
- "internalType": "uint40",
239
- "name": "expiration",
240
- "type": "uint40"
241
- }
242
- ],
243
- "indexed": false,
244
- "internalType": "struct Policy.PolicyData",
245
- "name": "policy",
246
- "type": "tuple"
247
- }
248
- ],
249
- "name": "NewPolicy",
250
- "type": "event"
251
- },
252
- {
253
- "anonymous": false,
254
- "inputs": [
255
- {
256
- "indexed": false,
257
- "internalType": "address",
258
- "name": "account",
259
- "type": "address"
260
- }
261
- ],
262
- "name": "Paused",
263
- "type": "event"
264
- },
265
- {
266
- "anonymous": false,
267
- "inputs": [
268
- {
269
- "indexed": true,
270
- "internalType": "contract IRiskModule",
271
- "name": "riskModule",
272
- "type": "address"
273
- },
274
- {
275
- "indexed": true,
276
- "internalType": "uint256",
277
- "name": "policyId",
278
- "type": "uint256"
279
- },
280
- {
281
- "indexed": false,
282
- "internalType": "uint256",
283
- "name": "payout",
284
- "type": "uint256"
285
- }
286
- ],
287
- "name": "PolicyResolved",
288
- "type": "event"
289
- },
290
- {
291
- "anonymous": false,
292
- "inputs": [
293
- {
294
- "indexed": true,
295
- "internalType": "address",
296
- "name": "from",
297
- "type": "address"
298
- },
299
- {
300
- "indexed": true,
301
- "internalType": "address",
302
- "name": "to",
303
- "type": "address"
304
- },
305
- {
306
- "indexed": true,
307
- "internalType": "uint256",
308
- "name": "tokenId",
309
- "type": "uint256"
310
- }
311
- ],
312
- "name": "Transfer",
313
- "type": "event"
314
- },
315
- {
316
- "anonymous": false,
317
- "inputs": [
318
- {
319
- "indexed": false,
320
- "internalType": "address",
321
- "name": "account",
322
- "type": "address"
323
- }
324
- ],
325
- "name": "Unpaused",
326
- "type": "event"
327
- },
328
- {
329
- "anonymous": false,
330
- "inputs": [
331
- {
332
- "indexed": true,
333
- "internalType": "address",
334
- "name": "implementation",
335
- "type": "address"
336
- }
337
- ],
338
- "name": "Upgraded",
339
- "type": "event"
340
- },
341
- {
342
- "inputs": [],
343
- "name": "GUARDIAN_ROLE",
344
- "outputs": [
345
- {
346
- "internalType": "bytes32",
347
- "name": "",
348
- "type": "bytes32"
349
- }
350
- ],
351
- "stateMutability": "view",
352
- "type": "function"
353
- },
354
- {
355
- "inputs": [],
356
- "name": "LEVEL1_ROLE",
357
- "outputs": [
358
- {
359
- "internalType": "bytes32",
360
- "name": "",
361
- "type": "bytes32"
362
- }
363
- ],
364
- "stateMutability": "view",
365
- "type": "function"
366
- },
367
- {
368
- "inputs": [],
369
- "name": "LEVEL2_ROLE",
370
- "outputs": [
371
- {
372
- "internalType": "bytes32",
373
- "name": "",
374
- "type": "bytes32"
375
- }
376
- ],
377
- "stateMutability": "view",
378
- "type": "function"
379
- },
380
- {
381
- "inputs": [],
382
- "name": "LEVEL3_ROLE",
383
- "outputs": [
384
- {
385
- "internalType": "bytes32",
386
- "name": "",
387
- "type": "bytes32"
388
- }
389
- ],
390
- "stateMutability": "view",
391
- "type": "function"
392
- },
393
- {
394
- "inputs": [],
395
- "name": "access",
396
- "outputs": [
397
- {
398
- "internalType": "contract IAccessManager",
399
- "name": "",
400
- "type": "address"
401
- }
402
- ],
403
- "stateMutability": "view",
404
- "type": "function"
405
- },
406
- {
407
- "inputs": [
408
- {
409
- "internalType": "contract IPolicyPoolComponent",
410
- "name": "component",
411
- "type": "address"
412
- },
413
- {
414
- "internalType": "enum PolicyPool.ComponentKind",
415
- "name": "kind",
416
- "type": "uint8"
417
- }
418
- ],
419
- "name": "addComponent",
420
- "outputs": [],
421
- "stateMutability": "nonpayable",
422
- "type": "function"
423
- },
424
- {
425
- "inputs": [
426
- {
427
- "internalType": "address",
428
- "name": "to",
429
- "type": "address"
430
- },
431
- {
432
- "internalType": "uint256",
433
- "name": "tokenId",
434
- "type": "uint256"
435
- }
436
- ],
437
- "name": "approve",
438
- "outputs": [],
439
- "stateMutability": "nonpayable",
440
- "type": "function"
441
- },
442
- {
443
- "inputs": [
444
- {
445
- "internalType": "address",
446
- "name": "owner",
447
- "type": "address"
448
- }
449
- ],
450
- "name": "balanceOf",
451
- "outputs": [
452
- {
453
- "internalType": "uint256",
454
- "name": "",
455
- "type": "uint256"
456
- }
457
- ],
458
- "stateMutability": "view",
459
- "type": "function"
460
- },
461
- {
462
- "inputs": [
463
- {
464
- "internalType": "contract IPolicyPoolComponent",
465
- "name": "component",
466
- "type": "address"
467
- },
468
- {
469
- "internalType": "enum PolicyPool.ComponentStatus",
470
- "name": "newStatus",
471
- "type": "uint8"
472
- }
473
- ],
474
- "name": "changeComponentStatus",
475
- "outputs": [],
476
- "stateMutability": "nonpayable",
477
- "type": "function"
478
- },
479
- {
480
- "inputs": [],
481
- "name": "currency",
482
- "outputs": [
483
- {
484
- "internalType": "contract IERC20Metadata",
485
- "name": "",
486
- "type": "address"
487
- }
488
- ],
489
- "stateMutability": "view",
490
- "type": "function"
491
- },
492
- {
493
- "inputs": [
494
- {
495
- "internalType": "contract IEToken",
496
- "name": "eToken",
497
- "type": "address"
498
- },
499
- {
500
- "internalType": "uint256",
501
- "name": "amount",
502
- "type": "uint256"
503
- }
504
- ],
505
- "name": "deposit",
506
- "outputs": [],
507
- "stateMutability": "nonpayable",
508
- "type": "function"
509
- },
510
- {
511
- "inputs": [
512
- {
513
- "components": [
514
- {
515
- "internalType": "uint256",
516
- "name": "id",
517
- "type": "uint256"
518
- },
519
- {
520
- "internalType": "uint256",
521
- "name": "payout",
522
- "type": "uint256"
523
- },
524
- {
525
- "internalType": "uint256",
526
- "name": "premium",
527
- "type": "uint256"
528
- },
529
- {
530
- "internalType": "uint256",
531
- "name": "jrScr",
532
- "type": "uint256"
533
- },
534
- {
535
- "internalType": "uint256",
536
- "name": "srScr",
537
- "type": "uint256"
538
- },
539
- {
540
- "internalType": "uint256",
541
- "name": "lossProb",
542
- "type": "uint256"
543
- },
544
- {
545
- "internalType": "uint256",
546
- "name": "purePremium",
547
- "type": "uint256"
548
- },
549
- {
550
- "internalType": "uint256",
551
- "name": "ensuroCommission",
552
- "type": "uint256"
553
- },
554
- {
555
- "internalType": "uint256",
556
- "name": "partnerCommission",
557
- "type": "uint256"
558
- },
559
- {
560
- "internalType": "uint256",
561
- "name": "jrCoc",
562
- "type": "uint256"
563
- },
564
- {
565
- "internalType": "uint256",
566
- "name": "srCoc",
567
- "type": "uint256"
568
- },
569
- {
570
- "internalType": "contract IRiskModule",
571
- "name": "riskModule",
572
- "type": "address"
573
- },
574
- {
575
- "internalType": "uint40",
576
- "name": "start",
577
- "type": "uint40"
578
- },
579
- {
580
- "internalType": "uint40",
581
- "name": "expiration",
582
- "type": "uint40"
583
- }
584
- ],
585
- "internalType": "struct Policy.PolicyData[]",
586
- "name": "policies",
587
- "type": "tuple[]"
588
- }
589
- ],
590
- "name": "expirePolicies",
591
- "outputs": [],
592
- "stateMutability": "nonpayable",
593
- "type": "function"
594
- },
595
- {
596
- "inputs": [
597
- {
598
- "components": [
599
- {
600
- "internalType": "uint256",
601
- "name": "id",
602
- "type": "uint256"
603
- },
604
- {
605
- "internalType": "uint256",
606
- "name": "payout",
607
- "type": "uint256"
608
- },
609
- {
610
- "internalType": "uint256",
611
- "name": "premium",
612
- "type": "uint256"
613
- },
614
- {
615
- "internalType": "uint256",
616
- "name": "jrScr",
617
- "type": "uint256"
618
- },
619
- {
620
- "internalType": "uint256",
621
- "name": "srScr",
622
- "type": "uint256"
623
- },
624
- {
625
- "internalType": "uint256",
626
- "name": "lossProb",
627
- "type": "uint256"
628
- },
629
- {
630
- "internalType": "uint256",
631
- "name": "purePremium",
632
- "type": "uint256"
633
- },
634
- {
635
- "internalType": "uint256",
636
- "name": "ensuroCommission",
637
- "type": "uint256"
638
- },
639
- {
640
- "internalType": "uint256",
641
- "name": "partnerCommission",
642
- "type": "uint256"
643
- },
644
- {
645
- "internalType": "uint256",
646
- "name": "jrCoc",
647
- "type": "uint256"
648
- },
649
- {
650
- "internalType": "uint256",
651
- "name": "srCoc",
652
- "type": "uint256"
653
- },
654
- {
655
- "internalType": "contract IRiskModule",
656
- "name": "riskModule",
657
- "type": "address"
658
- },
659
- {
660
- "internalType": "uint40",
661
- "name": "start",
662
- "type": "uint40"
663
- },
664
- {
665
- "internalType": "uint40",
666
- "name": "expiration",
667
- "type": "uint40"
668
- }
669
- ],
670
- "internalType": "struct Policy.PolicyData",
671
- "name": "policy",
672
- "type": "tuple"
673
- }
674
- ],
675
- "name": "expirePolicy",
676
- "outputs": [],
677
- "stateMutability": "nonpayable",
678
- "type": "function"
679
- },
680
- {
681
- "inputs": [
682
- {
683
- "internalType": "uint256",
684
- "name": "tokenId",
685
- "type": "uint256"
686
- }
687
- ],
688
- "name": "getApproved",
689
- "outputs": [
690
- {
691
- "internalType": "address",
692
- "name": "",
693
- "type": "address"
694
- }
695
- ],
696
- "stateMutability": "view",
697
- "type": "function"
698
- },
699
- {
700
- "inputs": [
701
- {
702
- "internalType": "contract IPolicyPoolComponent",
703
- "name": "component",
704
- "type": "address"
705
- }
706
- ],
707
- "name": "getComponentStatus",
708
- "outputs": [
709
- {
710
- "internalType": "enum PolicyPool.ComponentStatus",
711
- "name": "",
712
- "type": "uint8"
713
- }
714
- ],
715
- "stateMutability": "view",
716
- "type": "function"
717
- },
718
- {
719
- "inputs": [
720
- {
721
- "internalType": "uint256",
722
- "name": "policyId",
723
- "type": "uint256"
724
- }
725
- ],
726
- "name": "getPolicyHash",
727
- "outputs": [
728
- {
729
- "internalType": "bytes32",
730
- "name": "",
731
- "type": "bytes32"
732
- }
733
- ],
734
- "stateMutability": "view",
735
- "type": "function"
736
- },
737
- {
738
- "inputs": [
739
- {
740
- "internalType": "string",
741
- "name": "name_",
742
- "type": "string"
743
- },
744
- {
745
- "internalType": "string",
746
- "name": "symbol_",
747
- "type": "string"
748
- },
749
- {
750
- "internalType": "address",
751
- "name": "treasury_",
752
- "type": "address"
753
- }
754
- ],
755
- "name": "initialize",
756
- "outputs": [],
757
- "stateMutability": "nonpayable",
758
- "type": "function"
759
- },
760
- {
761
- "inputs": [
762
- {
763
- "internalType": "uint256",
764
- "name": "policyId",
765
- "type": "uint256"
766
- }
767
- ],
768
- "name": "isActive",
769
- "outputs": [
770
- {
771
- "internalType": "bool",
772
- "name": "",
773
- "type": "bool"
774
- }
775
- ],
776
- "stateMutability": "view",
777
- "type": "function"
778
- },
779
- {
780
- "inputs": [
781
- {
782
- "internalType": "address",
783
- "name": "owner",
784
- "type": "address"
785
- },
786
- {
787
- "internalType": "address",
788
- "name": "operator",
789
- "type": "address"
790
- }
791
- ],
792
- "name": "isApprovedForAll",
793
- "outputs": [
794
- {
795
- "internalType": "bool",
796
- "name": "",
797
- "type": "bool"
798
- }
799
- ],
800
- "stateMutability": "view",
801
- "type": "function"
802
- },
803
- {
804
- "inputs": [],
805
- "name": "name",
806
- "outputs": [
807
- {
808
- "internalType": "string",
809
- "name": "",
810
- "type": "string"
811
- }
812
- ],
813
- "stateMutability": "view",
814
- "type": "function"
815
- },
816
- {
817
- "inputs": [
818
- {
819
- "components": [
820
- {
821
- "internalType": "uint256",
822
- "name": "id",
823
- "type": "uint256"
824
- },
825
- {
826
- "internalType": "uint256",
827
- "name": "payout",
828
- "type": "uint256"
829
- },
830
- {
831
- "internalType": "uint256",
832
- "name": "premium",
833
- "type": "uint256"
834
- },
835
- {
836
- "internalType": "uint256",
837
- "name": "jrScr",
838
- "type": "uint256"
839
- },
840
- {
841
- "internalType": "uint256",
842
- "name": "srScr",
843
- "type": "uint256"
844
- },
845
- {
846
- "internalType": "uint256",
847
- "name": "lossProb",
848
- "type": "uint256"
849
- },
850
- {
851
- "internalType": "uint256",
852
- "name": "purePremium",
853
- "type": "uint256"
854
- },
855
- {
856
- "internalType": "uint256",
857
- "name": "ensuroCommission",
858
- "type": "uint256"
859
- },
860
- {
861
- "internalType": "uint256",
862
- "name": "partnerCommission",
863
- "type": "uint256"
864
- },
865
- {
866
- "internalType": "uint256",
867
- "name": "jrCoc",
868
- "type": "uint256"
869
- },
870
- {
871
- "internalType": "uint256",
872
- "name": "srCoc",
873
- "type": "uint256"
874
- },
875
- {
876
- "internalType": "contract IRiskModule",
877
- "name": "riskModule",
878
- "type": "address"
879
- },
880
- {
881
- "internalType": "uint40",
882
- "name": "start",
883
- "type": "uint40"
884
- },
885
- {
886
- "internalType": "uint40",
887
- "name": "expiration",
888
- "type": "uint40"
889
- }
890
- ],
891
- "internalType": "struct Policy.PolicyData",
892
- "name": "policy",
893
- "type": "tuple"
894
- },
895
- {
896
- "internalType": "address",
897
- "name": "payer",
898
- "type": "address"
899
- },
900
- {
901
- "internalType": "address",
902
- "name": "policyHolder",
903
- "type": "address"
904
- },
905
- {
906
- "internalType": "uint96",
907
- "name": "internalId",
908
- "type": "uint96"
909
- }
910
- ],
911
- "name": "newPolicy",
912
- "outputs": [
913
- {
914
- "internalType": "uint256",
915
- "name": "",
916
- "type": "uint256"
917
- }
918
- ],
919
- "stateMutability": "nonpayable",
920
- "type": "function"
921
- },
922
- {
923
- "inputs": [
924
- {
925
- "internalType": "uint256",
926
- "name": "tokenId",
927
- "type": "uint256"
928
- }
929
- ],
930
- "name": "ownerOf",
931
- "outputs": [
932
- {
933
- "internalType": "address",
934
- "name": "",
935
- "type": "address"
936
- }
937
- ],
938
- "stateMutability": "view",
939
- "type": "function"
940
- },
941
- {
942
- "inputs": [],
943
- "name": "pause",
944
- "outputs": [],
945
- "stateMutability": "nonpayable",
946
- "type": "function"
947
- },
948
- {
949
- "inputs": [],
950
- "name": "paused",
951
- "outputs": [
952
- {
953
- "internalType": "bool",
954
- "name": "",
955
- "type": "bool"
956
- }
957
- ],
958
- "stateMutability": "view",
959
- "type": "function"
960
- },
961
- {
962
- "inputs": [],
963
- "name": "proxiableUUID",
964
- "outputs": [
965
- {
966
- "internalType": "bytes32",
967
- "name": "",
968
- "type": "bytes32"
969
- }
970
- ],
971
- "stateMutability": "view",
972
- "type": "function"
973
- },
974
- {
975
- "inputs": [
976
- {
977
- "internalType": "contract IPolicyPoolComponent",
978
- "name": "component",
979
- "type": "address"
980
- }
981
- ],
982
- "name": "removeComponent",
983
- "outputs": [],
984
- "stateMutability": "nonpayable",
985
- "type": "function"
986
- },
987
- {
988
- "inputs": [
989
- {
990
- "components": [
991
- {
992
- "internalType": "uint256",
993
- "name": "id",
994
- "type": "uint256"
995
- },
996
- {
997
- "internalType": "uint256",
998
- "name": "payout",
999
- "type": "uint256"
1000
- },
1001
- {
1002
- "internalType": "uint256",
1003
- "name": "premium",
1004
- "type": "uint256"
1005
- },
1006
- {
1007
- "internalType": "uint256",
1008
- "name": "jrScr",
1009
- "type": "uint256"
1010
- },
1011
- {
1012
- "internalType": "uint256",
1013
- "name": "srScr",
1014
- "type": "uint256"
1015
- },
1016
- {
1017
- "internalType": "uint256",
1018
- "name": "lossProb",
1019
- "type": "uint256"
1020
- },
1021
- {
1022
- "internalType": "uint256",
1023
- "name": "purePremium",
1024
- "type": "uint256"
1025
- },
1026
- {
1027
- "internalType": "uint256",
1028
- "name": "ensuroCommission",
1029
- "type": "uint256"
1030
- },
1031
- {
1032
- "internalType": "uint256",
1033
- "name": "partnerCommission",
1034
- "type": "uint256"
1035
- },
1036
- {
1037
- "internalType": "uint256",
1038
- "name": "jrCoc",
1039
- "type": "uint256"
1040
- },
1041
- {
1042
- "internalType": "uint256",
1043
- "name": "srCoc",
1044
- "type": "uint256"
1045
- },
1046
- {
1047
- "internalType": "contract IRiskModule",
1048
- "name": "riskModule",
1049
- "type": "address"
1050
- },
1051
- {
1052
- "internalType": "uint40",
1053
- "name": "start",
1054
- "type": "uint40"
1055
- },
1056
- {
1057
- "internalType": "uint40",
1058
- "name": "expiration",
1059
- "type": "uint40"
1060
- }
1061
- ],
1062
- "internalType": "struct Policy.PolicyData",
1063
- "name": "policy",
1064
- "type": "tuple"
1065
- },
1066
- {
1067
- "internalType": "uint256",
1068
- "name": "payout",
1069
- "type": "uint256"
1070
- }
1071
- ],
1072
- "name": "resolvePolicy",
1073
- "outputs": [],
1074
- "stateMutability": "nonpayable",
1075
- "type": "function"
1076
- },
1077
- {
1078
- "inputs": [
1079
- {
1080
- "components": [
1081
- {
1082
- "internalType": "uint256",
1083
- "name": "id",
1084
- "type": "uint256"
1085
- },
1086
- {
1087
- "internalType": "uint256",
1088
- "name": "payout",
1089
- "type": "uint256"
1090
- },
1091
- {
1092
- "internalType": "uint256",
1093
- "name": "premium",
1094
- "type": "uint256"
1095
- },
1096
- {
1097
- "internalType": "uint256",
1098
- "name": "jrScr",
1099
- "type": "uint256"
1100
- },
1101
- {
1102
- "internalType": "uint256",
1103
- "name": "srScr",
1104
- "type": "uint256"
1105
- },
1106
- {
1107
- "internalType": "uint256",
1108
- "name": "lossProb",
1109
- "type": "uint256"
1110
- },
1111
- {
1112
- "internalType": "uint256",
1113
- "name": "purePremium",
1114
- "type": "uint256"
1115
- },
1116
- {
1117
- "internalType": "uint256",
1118
- "name": "ensuroCommission",
1119
- "type": "uint256"
1120
- },
1121
- {
1122
- "internalType": "uint256",
1123
- "name": "partnerCommission",
1124
- "type": "uint256"
1125
- },
1126
- {
1127
- "internalType": "uint256",
1128
- "name": "jrCoc",
1129
- "type": "uint256"
1130
- },
1131
- {
1132
- "internalType": "uint256",
1133
- "name": "srCoc",
1134
- "type": "uint256"
1135
- },
1136
- {
1137
- "internalType": "contract IRiskModule",
1138
- "name": "riskModule",
1139
- "type": "address"
1140
- },
1141
- {
1142
- "internalType": "uint40",
1143
- "name": "start",
1144
- "type": "uint40"
1145
- },
1146
- {
1147
- "internalType": "uint40",
1148
- "name": "expiration",
1149
- "type": "uint40"
1150
- }
1151
- ],
1152
- "internalType": "struct Policy.PolicyData",
1153
- "name": "policy",
1154
- "type": "tuple"
1155
- },
1156
- {
1157
- "internalType": "bool",
1158
- "name": "customerWon",
1159
- "type": "bool"
1160
- }
1161
- ],
1162
- "name": "resolvePolicyFullPayout",
1163
- "outputs": [],
1164
- "stateMutability": "nonpayable",
1165
- "type": "function"
1166
- },
1167
- {
1168
- "inputs": [
1169
- {
1170
- "internalType": "address",
1171
- "name": "from",
1172
- "type": "address"
1173
- },
1174
- {
1175
- "internalType": "address",
1176
- "name": "to",
1177
- "type": "address"
1178
- },
1179
- {
1180
- "internalType": "uint256",
1181
- "name": "tokenId",
1182
- "type": "uint256"
1183
- }
1184
- ],
1185
- "name": "safeTransferFrom",
1186
- "outputs": [],
1187
- "stateMutability": "nonpayable",
1188
- "type": "function"
1189
- },
1190
- {
1191
- "inputs": [
1192
- {
1193
- "internalType": "address",
1194
- "name": "from",
1195
- "type": "address"
1196
- },
1197
- {
1198
- "internalType": "address",
1199
- "name": "to",
1200
- "type": "address"
1201
- },
1202
- {
1203
- "internalType": "uint256",
1204
- "name": "tokenId",
1205
- "type": "uint256"
1206
- },
1207
- {
1208
- "internalType": "bytes",
1209
- "name": "data",
1210
- "type": "bytes"
1211
- }
1212
- ],
1213
- "name": "safeTransferFrom",
1214
- "outputs": [],
1215
- "stateMutability": "nonpayable",
1216
- "type": "function"
1217
- },
1218
- {
1219
- "inputs": [
1220
- {
1221
- "internalType": "address",
1222
- "name": "operator",
1223
- "type": "address"
1224
- },
1225
- {
1226
- "internalType": "bool",
1227
- "name": "approved",
1228
- "type": "bool"
1229
- }
1230
- ],
1231
- "name": "setApprovalForAll",
1232
- "outputs": [],
1233
- "stateMutability": "nonpayable",
1234
- "type": "function"
1235
- },
1236
- {
1237
- "inputs": [
1238
- {
1239
- "internalType": "string",
1240
- "name": "nftBaseURI_",
1241
- "type": "string"
1242
- }
1243
- ],
1244
- "name": "setBaseURI",
1245
- "outputs": [],
1246
- "stateMutability": "nonpayable",
1247
- "type": "function"
1248
- },
1249
- {
1250
- "inputs": [
1251
- {
1252
- "internalType": "address",
1253
- "name": "treasury_",
1254
- "type": "address"
1255
- }
1256
- ],
1257
- "name": "setTreasury",
1258
- "outputs": [],
1259
- "stateMutability": "nonpayable",
1260
- "type": "function"
1261
- },
1262
- {
1263
- "inputs": [
1264
- {
1265
- "internalType": "bytes4",
1266
- "name": "interfaceId",
1267
- "type": "bytes4"
1268
- }
1269
- ],
1270
- "name": "supportsInterface",
1271
- "outputs": [
1272
- {
1273
- "internalType": "bool",
1274
- "name": "",
1275
- "type": "bool"
1276
- }
1277
- ],
1278
- "stateMutability": "view",
1279
- "type": "function"
1280
- },
1281
- {
1282
- "inputs": [],
1283
- "name": "symbol",
1284
- "outputs": [
1285
- {
1286
- "internalType": "string",
1287
- "name": "",
1288
- "type": "string"
1289
- }
1290
- ],
1291
- "stateMutability": "view",
1292
- "type": "function"
1293
- },
1294
- {
1295
- "inputs": [
1296
- {
1297
- "internalType": "uint256",
1298
- "name": "tokenId",
1299
- "type": "uint256"
1300
- }
1301
- ],
1302
- "name": "tokenURI",
1303
- "outputs": [
1304
- {
1305
- "internalType": "string",
1306
- "name": "",
1307
- "type": "string"
1308
- }
1309
- ],
1310
- "stateMutability": "view",
1311
- "type": "function"
1312
- },
1313
- {
1314
- "inputs": [
1315
- {
1316
- "internalType": "address",
1317
- "name": "from",
1318
- "type": "address"
1319
- },
1320
- {
1321
- "internalType": "address",
1322
- "name": "to",
1323
- "type": "address"
1324
- },
1325
- {
1326
- "internalType": "uint256",
1327
- "name": "tokenId",
1328
- "type": "uint256"
1329
- }
1330
- ],
1331
- "name": "transferFrom",
1332
- "outputs": [],
1333
- "stateMutability": "nonpayable",
1334
- "type": "function"
1335
- },
1336
- {
1337
- "inputs": [],
1338
- "name": "treasury",
1339
- "outputs": [
1340
- {
1341
- "internalType": "address",
1342
- "name": "",
1343
- "type": "address"
1344
- }
1345
- ],
1346
- "stateMutability": "view",
1347
- "type": "function"
1348
- },
1349
- {
1350
- "inputs": [],
1351
- "name": "unpause",
1352
- "outputs": [],
1353
- "stateMutability": "nonpayable",
1354
- "type": "function"
1355
- },
1356
- {
1357
- "inputs": [
1358
- {
1359
- "internalType": "address",
1360
- "name": "newImplementation",
1361
- "type": "address"
1362
- }
1363
- ],
1364
- "name": "upgradeTo",
1365
- "outputs": [],
1366
- "stateMutability": "nonpayable",
1367
- "type": "function"
1368
- },
1369
- {
1370
- "inputs": [
1371
- {
1372
- "internalType": "address",
1373
- "name": "newImplementation",
1374
- "type": "address"
1375
- },
1376
- {
1377
- "internalType": "bytes",
1378
- "name": "data",
1379
- "type": "bytes"
1380
- }
1381
- ],
1382
- "name": "upgradeToAndCall",
1383
- "outputs": [],
1384
- "stateMutability": "payable",
1385
- "type": "function"
1386
- },
1387
- {
1388
- "inputs": [
1389
- {
1390
- "internalType": "contract IEToken",
1391
- "name": "eToken",
1392
- "type": "address"
1393
- },
1394
- {
1395
- "internalType": "uint256",
1396
- "name": "amount",
1397
- "type": "uint256"
1398
- }
1399
- ],
1400
- "name": "withdraw",
1401
- "outputs": [
1402
- {
1403
- "internalType": "uint256",
1404
- "name": "",
1405
- "type": "uint256"
1406
- }
1407
- ],
1408
- "stateMutability": "nonpayable",
1409
- "type": "function"
1410
- }
1411
- ],
1412
- "bytecode": "0x60e0604052306080523480156200001557600080fd5b5060405162005d9238038062005d9283398101604081905262000038916200020b565b6001600160a01b038216620000a65760405162461bcd60e51b815260206004820152602960248201527f506f6c696379506f6f6c3a206163636573732063616e6e6f74206265207a65726044820152686f206164647265737360b81b60648201526084015b60405180910390fd5b6001600160a01b038116620001125760405162461bcd60e51b815260206004820152602b60248201527f506f6c696379506f6f6c3a2063757272656e63792063616e6e6f74206265207a60448201526a65726f206164647265737360a81b60648201526084016200009d565b6200011c62000134565b6001600160a01b0391821660a0521660c0526200024a565b600054610100900460ff16156200019e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016200009d565b60005460ff90811614620001f0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200020857600080fd5b50565b600080604083850312156200021f57600080fd5b82516200022c81620001f2565b60208401519092506200023f81620001f2565b809150509250929050565b60805160a05160c051615a69620003296000396000818161076401528181610e7b01528181610eef01528181610f5001528181611a6901528181611b1401528181611bbd01528181611bfc01528181611d2d015261349c01526000818161060901528181610d3d015281816111e0015281816112e001528181611406015281816114d5015281816115a401528181611e600152818161247d01528181612b0b01528181612d5e0152818161331401526133a8015260008181610c4001528181610c800152818161104001528181611080015261110f0152615a696000f3fe6080604052600436106102515760003560e01c80636769a76f116101395780638c916d46116100b6578063e5a6b10f1161007a578063e5a6b10f14610755578063e985e9c514610788578063f0f44260146107a8578063f3fef3a3146107c8578063f67b2bad146107e8578063ffa600e31461080a57600080fd5b80638c916d46146106c057806395d89b41146106e0578063a22cb465146106f5578063b88d4fde14610715578063c87b56dd1461073557600080fd5b806371907f17116100fd57806371907f17146105fa578063792da09e1461062d5780637a702b3c1461065b57806382afd23b1461067b5780638456cb59146106ab57600080fd5b80636769a76f1461055a5780636af6f1ef1461057a5780636b8734e71461059a5780636f86c897146105ba57806370a08231146105da57600080fd5b806342842e0e116101d257806355f804b31161019657806355f804b31461048f5780635b494dd5146104af5780635c975abb146104e35780635fcbf445146104fb57806361d027b31461051b5780636352211e1461053a57600080fd5b806342842e0e146103f357806347e7ef24146104135780634a47a3e0146104335780634f1ef2861461046757806352d1902d1461047a57600080fd5b806323b872dd1161021957806323b872dd1461032757806324ea54f41461034757806333d6157a146103775780633659cfe6146103be5780633f4ba83a146103de57600080fd5b806301ffc9a71461025657806306fdde031461028b578063077f224a146102ad578063081812fc146102cf578063095ea7b314610307575b600080fd5b34801561026257600080fd5b50610276610271366004614d34565b61082a565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102a0610856565b6040516102829190614da1565b3480156102b957600080fd5b506102cd6102c8366004614e96565b6108e8565b005b3480156102db57600080fd5b506102ef6102ea366004614f0e565b610ac9565b6040516001600160a01b039091168152602001610282565b34801561031357600080fd5b506102cd610322366004614f27565b610af0565b34801561033357600080fd5b506102cd610342366004614f53565b610c05565b34801561035357600080fd5b50610369600080516020615a1483398151915281565b604051908152602001610282565b34801561038357600080fd5b506103b1610392366004614f94565b6001600160a01b0316600090815261012e602052604090205460ff1690565b6040516102829190614fe5565b3480156103ca57600080fd5b506102cd6103d9366004614f94565b610c36565b3480156103ea57600080fd5b506102cd610d15565b3480156103ff57600080fd5b506102cd61040e366004614f53565b610dd6565b34801561041f57600080fd5b506102cd61042e366004614f27565b610df1565b34801561043f57600080fd5b506103697fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102cd610475366004614ff8565b611036565b34801561048657600080fd5b50610369611102565b34801561049b57600080fd5b506102cd6104aa366004615048565b6111b5565b3480156104bb57600080fd5b506103697f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104ef57600080fd5b5060335460ff16610276565b34801561050757600080fd5b506102cd61051636600461508a565b6112b8565b34801561052757600080fd5b5061012d546001600160a01b03166102ef565b34801561054657600080fd5b506102ef610555366004614f0e565b611731565b34801561056657600080fd5b506103696105753660046151aa565b611791565b34801561058657600080fd5b506102cd610595366004615233565b611dc3565b3480156105a657600080fd5b506102cd6105b536600461508a565b611e47565b3480156105c657600080fd5b506102cd6105d5366004614f94565b612464565b3480156105e657600080fd5b506103696105f5366004614f94565b612a4a565b34801561060657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ef565b34801561063957600080fd5b50610369610648366004614f0e565b600090815261012f602052604090205490565b34801561066757600080fd5b506102cd610676366004615250565b612ad0565b34801561068757600080fd5b50610276610696366004614f0e565b600090815261012f6020526040902054151590565b3480156106b757600080fd5b506102cd612af2565b3480156106cc57600080fd5b506102cd6106db36600461527d565b612b97565b3480156106ec57600080fd5b506102a0612c63565b34801561070157600080fd5b506102cd610710366004615301565b612c72565b34801561072157600080fd5b506102cd61073036600461532f565b612c7d565b34801561074157600080fd5b506102a0610750366004614f0e565b612caf565b34801561076157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ef565b34801561079457600080fd5b506102766107a336600461539b565b612d16565b3480156107b457600080fd5b506102cd6107c3366004614f94565b612d45565b3480156107d457600080fd5b506103696107e3366004614f27565b612deb565b3480156107f457600080fd5b506103696000805160206159cd83398151915281565b34801561081657600080fd5b506102cd6108253660046153c9565b612f14565b600061083582612f47565b8061085057506001600160e01b0319821663191a7d6b60e11b145b92915050565b606060fb8054610865906153f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610891906153f8565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b600054610100900460ff16158080156109085750600054600160ff909116105b806109225750303b158015610922575060005460ff166001145b61098a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109ad576000805461ff0019166101001790555b60008451116109fe5760405162461bcd60e51b815260206004820181905260248201527f506f6c696379506f6f6c3a206e616d652063616e6e6f7420626520656d7074796044820152606401610981565b6000835111610a5a5760405162461bcd60e51b815260206004820152602260248201527f506f6c696379506f6f6c3a2073796d626f6c2063616e6e6f7420626520656d70604482015261747960f01b6064820152608401610981565b610a62612f97565b610a6c8484612fc0565b610a74612ff1565b610a7d82613020565b8015610ac3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610ad482613050565b50600090815260ff60205260409020546001600160a01b031690565b6000610afb82611731565b9050806001600160a01b0316836001600160a01b031603610b685760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610981565b336001600160a01b0382161480610b845750610b848133612d16565b610bf65760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610981565b610c0083836130af565b505050565b610c0f338261311d565b610c2b5760405162461bcd60e51b81526004016109819061542c565b610c0083838361317b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c7e5760405162461bcd60e51b815260040161098190615479565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cc76000805160206159ad833981519152546001600160a01b031690565b6001600160a01b031614610ced5760405162461bcd60e51b8152600401610981906154c5565b610cf6816132ec565b60408051600080825260208201909252610d1291839190613588565b50565b600080516020615a148339815191526000805160206159cd8339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610db257600080fd5b505afa158015610dc6573d6000803e3d6000fd5b50505050610dd26136f3565b5050565b610c0083838360405180602001604052806000815250612c7d565b610df9613745565b6001610e048361378b565b6003811115610e1557610e15614fb1565b14610e595760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610981565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee89190615511565b9050610f1f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338585613818565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190615511565b610fc79190615540565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190615511565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361107e5760405162461bcd60e51b815260040161098190615479565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110c76000805160206159ad833981519152546001600160a01b031690565b6001600160a01b0316146110ed5760405162461bcd60e51b8152600401610981906154c5565b6110f6826132ec565b610dd282826001613588565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111a25760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610981565b506000805160206159ad83398151915290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b5050505081610130908161127491906155a1565b5060047fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f336040516001600160a01b03909116815260200160405180910390a25050565b600080516020615a148339815191526000805160206159cd8339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561135557600080fd5b505afa158015611369573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff16600381111561139d5761139d614fb1565b036113e05760405162461bcd60e51b815260206004820152601360248201527210dbdb5c1bdb995b9d081b9bdd08199bdd5b99606a1b6044820152606401610981565b60018460038111156113f4576113f4614fb1565b1480156114a957506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206159cd833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a99190615661565b80611578575060038460038111156114c3576114c3614fb1565b14801561157857506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020615a14833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115789190615661565b806116475750600284600381111561159257611592614fb1565b14801561164757506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206159cd833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611623573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116479190615661565b6116b95760405162461bcd60e51b815260206004820152603e60248201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960448201527f204c4556454c312063616e2061637469766174652f64657072656361746500006064820152608401610981565b80548490829060ff191660018360038111156116d7576116d7614fb1565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161172291610100900460ff1690889061567e565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806108505760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610981565b600061179b613745565b6101608501516001600160a01b03811633146118055760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610981565b600161181082613872565b600381111561182157611821614fb1565b146118785760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b6064820152608401610981565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc91906156a4565b905060016118e9826138f5565b60038111156118fa576118fa614fb1565b146119575760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f7420666f756e64206f72206e6f746044820152662061637469766560c81b6064820152608401610981565b6119826bffffffffffffffffffffffff85166bffffffffffffffffffffffff19606085901b166156c1565b808852600090815261012f6020526040902054156119da5760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610981565b6119e387613983565b8751600090815261012f602052604090819020919091555163e3638ea360e01b81526001600160a01b0382169063e3638ea390611a24908a9060040161578c565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b50505060c0880151611a9391506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613818565b61014087015115611b3c57611b3c86826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0491906156a4565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613818565b61012087015115611be557611be586826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906156a4565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613818565b61012d5460e0880151611c2a916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613818565b6000876101000151118015611cb25750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c91906156a4565b6001600160a01b0316866001600160a01b031614155b15611d5557611d5586836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d91906156a4565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613818565b611d7385886000015160405180602001604052806000815250613a02565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b88604051611dac919061578c565b60405180910390a25050845190505b949350505050565b611dcb613745565b42611dde6101c083016101a0840161579b565b64ffffffffff161115611e2c5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610981565b610d12611e3e368390038301836157b6565b60006001613a35565b6000805160206159cd8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff166003811115611f1457611f14614fb1565b14611f615760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e7420616c726561647920696e2074686520706f6f6c0000006044820152606401610981565b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcd91906156a4565b6001600160a01b03161461202d5760405162461bcd60e51b815260206004820152602160248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320706f6f6044820152601b60fa1b6064820152608401610981565b600183600381111561204157612041614fb1565b1480156120b857506040516301ffc9a760e01b8152639077062160e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015612094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b89190615661565b80612149575060038360038111156120d2576120d2614fb1565b14801561214957506040516301ffc9a760e01b8152632dd9c4bb60e21b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015612125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121499190615661565b806121da5750600283600381111561216357612163614fb1565b1480156121da57506040516301ffc9a760e01b815263da40804f60e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da9190615661565b6122265760405162461bcd60e51b815260206004820152601e60248201527f506f6c696379506f6f6c3a204e6f7420746865207269676874206b696e6400006044820152606401610981565b8054600160ff198216811783558491839161ffff199091161761010083600381111561225457612254614fb1565b0217905550600383600381111561226d5761226d614fb1565b0361241a5760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122db91906156a4565b90506001600160a01b03811615612348576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b15801561232f57600080fd5b505af1158015612343573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123aa91906156a4565b90506001600160a01b03811615612417576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156123fe57600080fd5b505af1158015612412573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161245692919061567e565b60405180910390a250505050565b6000805160206159cd8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156124e957600080fd5b505afa1580156124fd573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff16600381111561253257612532614fb1565b1461257f5760405162461bcd60e51b815260206004820152601860248201527f436f6d706f6e656e74206e6f74206465707265636174656400000000000000006044820152606401610981565b60018154610100900460ff16600381111561259c5761259c614fb1565b0361266457826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126039190615511565b1561265f5760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610981565b6129d6565b60028154610100900460ff16600381111561268157612681614fb1565b0361274857826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190615511565b1561265f5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b6064820152608401610981565b60038154610100900460ff16600381111561276557612765614fb1565b036129d6576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d19190615511565b156128335760405162461bcd60e51b815260206004820152602c60248201527f43616e27742072656d6f76652061205072656d69756d734163636f756e74207760448201526b697468207072656d69756d7360a01b6064820152608401610981565b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612873573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289791906156a4565b90506001600160a01b03811615612904576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296691906156a4565b90506001600160a01b038116156129d3576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b1580156129ba57600080fd5b505af11580156129ce573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612a1d91610100900460ff169060009061567e565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b038216612ab45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610981565b506001600160a01b0316600090815260fe602052604090205490565b612ad8613745565b610dd2612aea368490038401846157b6565b826000613a35565b600080516020615a148339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612b7757600080fd5b505afa158015612b8b573d6000803e3d6000fd5b50505050610d12613ef5565b612b9f613745565b60005b81811015610c005742838383818110612bbd57612bbd6157d3565b90506101c002016101a0016020810190612bd7919061579b565b64ffffffffff161115612c255760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610981565b612c51838383818110612c3a57612c3a6157d3565b90506101c00201803603810190611e3e91906157b6565b80612c5b816157e9565b915050612ba2565b606060fc8054610865906153f8565b610dd2338383613f32565b612c87338361311d565b612ca35760405162461bcd60e51b81526004016109819061542c565b610ac384848484614001565b6060612cba82613050565b6000612cc4614034565b90506000815111612ce45760405180602001604052806000815250612d0f565b80612cee84614044565b604051602001612cff929190615802565b6040516020818303038152906040525b9392505050565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b6000805160206159cd8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612dca57600080fd5b505afa158015612dde573d6000803e3d6000fd5b50505050610dd2826140d7565b6000612df5613745565b6000612e008461378b565b90506001816003811115612e1657612e16614fb1565b1480612e3357506002816003811115612e3157612e31614fb1565b145b612e915760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610981565b60003360405163f3fef3a360e01b81526001600160a01b038083166004830152602482018790529192509086169063f3fef3a3906044016020604051808303816000875af1158015612ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0b9190615511565b95945050505050565b612f1c613745565b610dd2612f2e368490038401846157b6565b82612f3a576000612f40565b83602001355b6000613a35565b60006001600160e01b031982166380ac58cd60e01b1480612f7857506001600160e01b03198216635b5e139f60e01b145b8061085057506301ffc9a760e01b6001600160e01b0319831614610850565b600054610100900460ff16612fbe5760405162461bcd60e51b815260040161098190615831565b565b600054610100900460ff16612fe75760405162461bcd60e51b815260040161098190615831565b610dd282826141a7565b600054610100900460ff166130185760405162461bcd60e51b815260040161098190615831565b612fbe6141e7565b600054610100900460ff166130475760405162461bcd60e51b815260040161098190615831565b610d12816140d7565b600081815260fd60205260409020546001600160a01b0316610d125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610981565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906130e482611731565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061312983611731565b9050806001600160a01b0316846001600160a01b0316148061315057506131508185612d16565b80611dbb5750836001600160a01b031661316984610ac9565b6001600160a01b031614949350505050565b826001600160a01b031661318e82611731565b6001600160a01b0316146131b45760405162461bcd60e51b81526004016109819061587c565b6001600160a01b0382166132165760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610981565b613223838383600161421a565b826001600160a01b031661323682611731565b6001600160a01b03161461325c5760405162461bcd60e51b81526004016109819061587c565b600081815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080546000190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020615a148339815191526000805160206159cd8339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561338957600080fd5b505afa15801561339d573d6000803e3d6000fd5b5050505060008390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561340e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343291906156a4565b6001600160a01b03161461349a5760405162461bcd60e51b815260206004820152602960248201527f43616e27742075706772616465206368616e67696e6720746865206163636573604482015268399036b0b730b3b2b960b91b6064820152608401610981565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352691906156a4565b6001600160a01b031614610ac35760405162461bcd60e51b815260206004820152602360248201527f43616e27742075706772616465206368616e67696e67207468652063757272656044820152626e637960e81b6064820152608401610981565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156135bb57610c0083614227565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613615575060408051601f3d908101601f1916820190925261361291810190615511565b60015b6136785760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610981565b6000805160206159ad83398151915281146136e75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610981565b50610c008383836142c3565b6136fb6142e8565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff1615612fbe5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610981565b6001600160a01b038116600090815261012e6020526040812060018154610100900460ff1660038111156137c1576137c1614fb1565b1461380e5760405162461bcd60e51b815260206004820152601a60248201527f436f6d706f6e656e74206973206e6f7420616e2065546f6b656e0000000000006044820152606401610981565b5460ff1692915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ac3908590614331565b6001600160a01b038116600090815261012e6020526040812060028154610100900460ff1660038111156138a8576138a8614fb1565b1461380e5760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e74206973206e6f742061205269736b4d6f64756c650000006044820152606401610981565b6001600160a01b038116600090815261012e6020526040812060038154610100900460ff16600381111561392b5761392b614fb1565b1461380e5760405162461bcd60e51b815260206004820152602260248201527f436f6d706f6e656e74206973206e6f742061205072656d69756d734163636f756044820152611b9d60f21b6064820152608401610981565b600081604051602001613996919061578c565b60408051601f1981840301815291905280516020909101209050806139fd5760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610981565b919050565b613a0c8383614406565b613a19600084848461459f565b610c005760405162461bcd60e51b8152600401610981906158c1565b613a3e8361469d565b6101608301518180613a5857506001600160a01b03811633145b613aa45760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610981565b821580613abc575042846101a0015164ffffffffff16115b613b085760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610981565b6000613b1382613872565b90506001816003811115613b2957613b29614fb1565b1480613b4657506002816003811115613b4457613b44614fb1565b145b613bb85760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e730000000000006064820152608401610981565b8460200151841115613c055760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610981565b600080851190506000836001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7091906156a4565b9050613c7b816138f5565b92506001836003811115613c9157613c91614fb1565b1480613cae57506002836003811115613cac57613cac614fb1565b145b613d2c5760405162461bcd60e51b815260206004820152604360248201527f5072656d69756d734163636f756e74206d75737420626520616374697665206f60448201527f72206465707265636174656420746f2070726f63657373207265736f6c7574696064820152626f6e7360e81b608482015260a401610981565b8651600090815261012f60205260408120558115613dbe576000613d538860000151611731565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613d869084908c908c90600401615913565b600060405180830381600087803b158015613da057600080fd5b505af1158015613db4573d6000803e3d6000fd5b5050505050613e1d565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613dea908a9060040161578c565b600060405180830381600087803b158015613e0457600080fd5b505af1158015613e18573d6000803e3d6000fd5b505050505b6020870151604051636a448ef160e01b815260048101919091526001600160a01b03851690636a448ef190602401600060405180830381600087803b158015613e6557600080fd5b505af1158015613e79573d6000803e3d6000fd5b5050505086600001518761016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e88604051613ec291815260200190565b60405180910390a38515613ee1578651613edc9087614704565b613eec565b8651613eec9061484d565b50505050505050565b613efd613745565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586137283390565b816001600160a01b0316836001600160a01b031603613f935760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610981565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61400c84848461317b565b6140188484848461459f565b610ac35760405162461bcd60e51b8152600401610981906158c1565b60606101308054610865906153f8565b606060006140518361490d565b600101905060008167ffffffffffffffff81111561407157614071614db4565b6040519080825280601f01601f19166020018201604052801561409b576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846140a557509392505050565b6001600160a01b0381166141455760405162461bcd60e51b815260206004820152602f60248201527f506f6c696379506f6f6c3a2074726561737572792063616e6e6f74206265207460448201526e6865207a65726f206164647265737360881b6064820152608401610981565b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b600054610100900460ff166141ce5760405162461bcd60e51b815260040161098190615831565b60fb6141da83826155a1565b5060fc610c0082826155a1565b600054610100900460ff1661420e5760405162461bcd60e51b815260040161098190615831565b6033805460ff19169055565b614222613745565b610ac3565b6001600160a01b0381163b6142945760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610981565b6000805160206159ad83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6142cc836149e5565b6000825111806142d95750805b15610c0057610ac38383614a25565b60335460ff16612fbe5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610981565b6000614386826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a4a9092919063ffffffff16565b90508051600014806143a75750808060200190518101906143a79190615661565b610c005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610981565b6001600160a01b03821661445c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610981565b600081815260fd60205260409020546001600160a01b0316156144c15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610981565b6144cf60008383600161421a565b600081815260fd60205260409020546001600160a01b0316156145345760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610981565b6001600160a01b038216600081815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561469557604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906145e3903390899088908890600401615940565b6020604051808303816000875af192505050801561461e575060408051601f3d908101601f1916820190925261461b91810190615973565b60015b61467b573d80801561464c576040519150601f19603f3d011682016040523d82523d6000602084013e614651565b606091505b5080516000036146735760405162461bcd60e51b8152600401610981906158c1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611dbb565b506001611dbb565b8051158015906146c557508051600090815261012f60205260409020546146c382613983565b145b610d125760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610981565b600061470f83611731565b90506001600160a01b0381163b61472557505050565b61473681633ece0a8960e01b614a59565b61473f57505050565b60006001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af11580156147ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147cf9190615973565b90506001600160e01b03198116636b140e9f60e11b14610ac35760405162461bcd60e51b815260206004820152603360248201527f506f6c696379506f6f6c3a20496e76616c69642072657475726e2076616c756560448201527210333937b69024a837b634b1bca437b63232b960691b6064820152608401610981565b600061485882611731565b90506001600160a01b0381163b61486d575050565b61487e81633ece0a8960e01b614a59565b614886575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1925050508015614905575060408051601f3d908101601f1916820190925261490291810190615973565b60015b610c00575050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061494c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614978576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061499657662386f26fc10000830492506010015b6305f5e10083106149ae576305f5e100830492506008015b61271083106149c257612710830492506004015b606483106149d4576064830492506002015b600a83106108505760010192915050565b6149ee81614227565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612d0f83836040518060600160405280602781526020016159ed60279139614a75565b6060611dbb8484600085614aed565b6000614a6483614bc8565b8015612d0f5750612d0f8383614bfb565b6060600080856001600160a01b031685604051614a929190615990565b600060405180830381855af49150503d8060008114614acd576040519150601f19603f3d011682016040523d82523d6000602084013e614ad2565b606091505b5091509150614ae386838387614c80565b9695505050505050565b606082471015614b4e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610981565b600080866001600160a01b03168587604051614b6a9190615990565b60006040518083038185875af1925050503d8060008114614ba7576040519150601f19603f3d011682016040523d82523d6000602084013e614bac565b606091505b5091509150614bbd87838387614c80565b979650505050505050565b6000614bdb826301ffc9a760e01b614bfb565b80156108505750614bf4826001600160e01b0319614bfb565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015614c6d575060208210155b8015614bbd575015159695505050505050565b60608315614cef578251600003614ce8576001600160a01b0385163b614ce85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610981565b5081611dbb565b611dbb8383815115614d045781518083602001fd5b8060405162461bcd60e51b81526004016109819190614da1565b6001600160e01b031981168114610d1257600080fd5b600060208284031215614d4657600080fd5b8135612d0f81614d1e565b60005b83811015614d6c578181015183820152602001614d54565b50506000910152565b60008151808452614d8d816020860160208601614d51565b601f01601f19169290920160200192915050565b602081526000612d0f6020830184614d75565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715614dee57614dee614db4565b60405290565b600082601f830112614e0557600080fd5b813567ffffffffffffffff80821115614e2057614e20614db4565b604051601f8301601f19908116603f01168101908282118183101715614e4857614e48614db4565b81604052838152866020858801011115614e6157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610d1257600080fd5b600080600060608486031215614eab57600080fd5b833567ffffffffffffffff80821115614ec357600080fd5b614ecf87838801614df4565b94506020860135915080821115614ee557600080fd5b50614ef286828701614df4565b9250506040840135614f0381614e81565b809150509250925092565b600060208284031215614f2057600080fd5b5035919050565b60008060408385031215614f3a57600080fd5b8235614f4581614e81565b946020939093013593505050565b600080600060608486031215614f6857600080fd5b8335614f7381614e81565b92506020840135614f8381614e81565b929592945050506040919091013590565b600060208284031215614fa657600080fd5b8135612d0f81614e81565b634e487b7160e01b600052602160045260246000fd5b60048110610d1257634e487b7160e01b600052602160045260246000fd5b60208101614ff283614fc7565b91905290565b6000806040838503121561500b57600080fd5b823561501681614e81565b9150602083013567ffffffffffffffff81111561503257600080fd5b61503e85828601614df4565b9150509250929050565b60006020828403121561505a57600080fd5b813567ffffffffffffffff81111561507157600080fd5b611dbb84828501614df4565b60048110610d1257600080fd5b6000806040838503121561509d57600080fd5b82356150a881614e81565b915060208301356150b88161507d565b809150509250929050565b80356139fd81614e81565b803564ffffffffff811681146139fd57600080fd5b60006101c082840312156150f657600080fd5b6150fe614dca565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016061517c8184016150c3565b9082015261018061518e8382016150ce565b908201526101a06151a08382016150ce565b9082015292915050565b60008060008061022085870312156151c157600080fd5b6151cb86866150e3565b93506101c08501356151dc81614e81565b92506101e08501356151ed81614e81565b91506102008501356bffffffffffffffffffffffff8116811461520f57600080fd5b939692955090935050565b60006101c0828403121561522d57600080fd5b50919050565b60006101c0828403121561524657600080fd5b612d0f838361521a565b6000806101e0838503121561526457600080fd5b61526e848461521a565b946101c0939093013593505050565b6000806020838503121561529057600080fd5b823567ffffffffffffffff808211156152a857600080fd5b818501915085601f8301126152bc57600080fd5b8135818111156152cb57600080fd5b8660206101c0830285010111156152e157600080fd5b60209290920196919550909350505050565b8015158114610d1257600080fd5b6000806040838503121561531457600080fd5b823561531f81614e81565b915060208301356150b8816152f3565b6000806000806080858703121561534557600080fd5b843561535081614e81565b9350602085013561536081614e81565b925060408501359150606085013567ffffffffffffffff81111561538357600080fd5b61538f87828801614df4565b91505092959194509250565b600080604083850312156153ae57600080fd5b82356153b981614e81565b915060208301356150b881614e81565b6000806101e083850312156153dd57600080fd5b6153e7848461521a565b91506101c08301356150b8816152f3565b600181811c9082168061540c57607f821691505b60208210810361522d57634e487b7160e01b600052602260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561552357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108505761085061552a565b601f821115610c0057600081815260208120601f850160051c8101602086101561557a5750805b601f850160051c820191505b8181101561559957828155600101615586565b505050505050565b815167ffffffffffffffff8111156155bb576155bb614db4565b6155cf816155c984546153f8565b84615553565b602080601f83116001811461560457600084156155ec5750858301515b600019600386901b1c1916600185901b178555615599565b600085815260208120601f198616915b8281101561563357888601518255948401946001909101908401615614565b50858210156156515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561567357600080fd5b8151612d0f816152f3565b6040810161568b84614fc7565b83825261569783614fc7565b8260208301529392505050565b6000602082840312156156b657600080fd5b8151612d0f81614e81565b808201808211156108505761085061552a565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152506101408082015181840152506101608082015161575d828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610ac3565b6101c0810161085082846156d4565b6000602082840312156157ad57600080fd5b612d0f826150ce565b60006101c082840312156157c957600080fd5b612d0f83836150e3565b634e487b7160e01b600052603260045260246000fd5b6000600182016157fb576157fb61552a565b5060010190565b60008351615814818460208801614d51565b835190830190615828818360208801614d51565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0384168152610200810161593160208301856156d4565b826101e0830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614ae390830184614d75565b60006020828403121561598557600080fd5b8151612d0f81614d1e565b600082516159a2818460208701614d51565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122064ff4760b261111df66ec957f8e35c01fe2e9b480713db48b0464e2393b685e864736f6c63430008100033",
1413
- "deployedBytecode": "0x6080604052600436106102515760003560e01c80636769a76f116101395780638c916d46116100b6578063e5a6b10f1161007a578063e5a6b10f14610755578063e985e9c514610788578063f0f44260146107a8578063f3fef3a3146107c8578063f67b2bad146107e8578063ffa600e31461080a57600080fd5b80638c916d46146106c057806395d89b41146106e0578063a22cb465146106f5578063b88d4fde14610715578063c87b56dd1461073557600080fd5b806371907f17116100fd57806371907f17146105fa578063792da09e1461062d5780637a702b3c1461065b57806382afd23b1461067b5780638456cb59146106ab57600080fd5b80636769a76f1461055a5780636af6f1ef1461057a5780636b8734e71461059a5780636f86c897146105ba57806370a08231146105da57600080fd5b806342842e0e116101d257806355f804b31161019657806355f804b31461048f5780635b494dd5146104af5780635c975abb146104e35780635fcbf445146104fb57806361d027b31461051b5780636352211e1461053a57600080fd5b806342842e0e146103f357806347e7ef24146104135780634a47a3e0146104335780634f1ef2861461046757806352d1902d1461047a57600080fd5b806323b872dd1161021957806323b872dd1461032757806324ea54f41461034757806333d6157a146103775780633659cfe6146103be5780633f4ba83a146103de57600080fd5b806301ffc9a71461025657806306fdde031461028b578063077f224a146102ad578063081812fc146102cf578063095ea7b314610307575b600080fd5b34801561026257600080fd5b50610276610271366004614d34565b61082a565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102a0610856565b6040516102829190614da1565b3480156102b957600080fd5b506102cd6102c8366004614e96565b6108e8565b005b3480156102db57600080fd5b506102ef6102ea366004614f0e565b610ac9565b6040516001600160a01b039091168152602001610282565b34801561031357600080fd5b506102cd610322366004614f27565b610af0565b34801561033357600080fd5b506102cd610342366004614f53565b610c05565b34801561035357600080fd5b50610369600080516020615a1483398151915281565b604051908152602001610282565b34801561038357600080fd5b506103b1610392366004614f94565b6001600160a01b0316600090815261012e602052604090205460ff1690565b6040516102829190614fe5565b3480156103ca57600080fd5b506102cd6103d9366004614f94565b610c36565b3480156103ea57600080fd5b506102cd610d15565b3480156103ff57600080fd5b506102cd61040e366004614f53565b610dd6565b34801561041f57600080fd5b506102cd61042e366004614f27565b610df1565b34801561043f57600080fd5b506103697fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102cd610475366004614ff8565b611036565b34801561048657600080fd5b50610369611102565b34801561049b57600080fd5b506102cd6104aa366004615048565b6111b5565b3480156104bb57600080fd5b506103697f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104ef57600080fd5b5060335460ff16610276565b34801561050757600080fd5b506102cd61051636600461508a565b6112b8565b34801561052757600080fd5b5061012d546001600160a01b03166102ef565b34801561054657600080fd5b506102ef610555366004614f0e565b611731565b34801561056657600080fd5b506103696105753660046151aa565b611791565b34801561058657600080fd5b506102cd610595366004615233565b611dc3565b3480156105a657600080fd5b506102cd6105b536600461508a565b611e47565b3480156105c657600080fd5b506102cd6105d5366004614f94565b612464565b3480156105e657600080fd5b506103696105f5366004614f94565b612a4a565b34801561060657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ef565b34801561063957600080fd5b50610369610648366004614f0e565b600090815261012f602052604090205490565b34801561066757600080fd5b506102cd610676366004615250565b612ad0565b34801561068757600080fd5b50610276610696366004614f0e565b600090815261012f6020526040902054151590565b3480156106b757600080fd5b506102cd612af2565b3480156106cc57600080fd5b506102cd6106db36600461527d565b612b97565b3480156106ec57600080fd5b506102a0612c63565b34801561070157600080fd5b506102cd610710366004615301565b612c72565b34801561072157600080fd5b506102cd61073036600461532f565b612c7d565b34801561074157600080fd5b506102a0610750366004614f0e565b612caf565b34801561076157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ef565b34801561079457600080fd5b506102766107a336600461539b565b612d16565b3480156107b457600080fd5b506102cd6107c3366004614f94565b612d45565b3480156107d457600080fd5b506103696107e3366004614f27565b612deb565b3480156107f457600080fd5b506103696000805160206159cd83398151915281565b34801561081657600080fd5b506102cd6108253660046153c9565b612f14565b600061083582612f47565b8061085057506001600160e01b0319821663191a7d6b60e11b145b92915050565b606060fb8054610865906153f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610891906153f8565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b600054610100900460ff16158080156109085750600054600160ff909116105b806109225750303b158015610922575060005460ff166001145b61098a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109ad576000805461ff0019166101001790555b60008451116109fe5760405162461bcd60e51b815260206004820181905260248201527f506f6c696379506f6f6c3a206e616d652063616e6e6f7420626520656d7074796044820152606401610981565b6000835111610a5a5760405162461bcd60e51b815260206004820152602260248201527f506f6c696379506f6f6c3a2073796d626f6c2063616e6e6f7420626520656d70604482015261747960f01b6064820152608401610981565b610a62612f97565b610a6c8484612fc0565b610a74612ff1565b610a7d82613020565b8015610ac3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610ad482613050565b50600090815260ff60205260409020546001600160a01b031690565b6000610afb82611731565b9050806001600160a01b0316836001600160a01b031603610b685760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610981565b336001600160a01b0382161480610b845750610b848133612d16565b610bf65760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610981565b610c0083836130af565b505050565b610c0f338261311d565b610c2b5760405162461bcd60e51b81526004016109819061542c565b610c0083838361317b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c7e5760405162461bcd60e51b815260040161098190615479565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cc76000805160206159ad833981519152546001600160a01b031690565b6001600160a01b031614610ced5760405162461bcd60e51b8152600401610981906154c5565b610cf6816132ec565b60408051600080825260208201909252610d1291839190613588565b50565b600080516020615a148339815191526000805160206159cd8339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610db257600080fd5b505afa158015610dc6573d6000803e3d6000fd5b50505050610dd26136f3565b5050565b610c0083838360405180602001604052806000815250612c7d565b610df9613745565b6001610e048361378b565b6003811115610e1557610e15614fb1565b14610e595760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610981565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee89190615511565b9050610f1f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338585613818565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190615511565b610fc79190615540565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190615511565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361107e5760405162461bcd60e51b815260040161098190615479565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110c76000805160206159ad833981519152546001600160a01b031690565b6001600160a01b0316146110ed5760405162461bcd60e51b8152600401610981906154c5565b6110f6826132ec565b610dd282826001613588565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111a25760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610981565b506000805160206159ad83398151915290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b5050505081610130908161127491906155a1565b5060047fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f336040516001600160a01b03909116815260200160405180910390a25050565b600080516020615a148339815191526000805160206159cd8339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561135557600080fd5b505afa158015611369573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff16600381111561139d5761139d614fb1565b036113e05760405162461bcd60e51b815260206004820152601360248201527210dbdb5c1bdb995b9d081b9bdd08199bdd5b99606a1b6044820152606401610981565b60018460038111156113f4576113f4614fb1565b1480156114a957506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206159cd833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a99190615661565b80611578575060038460038111156114c3576114c3614fb1565b14801561157857506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020615a14833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115789190615661565b806116475750600284600381111561159257611592614fb1565b14801561164757506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206159cd833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611623573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116479190615661565b6116b95760405162461bcd60e51b815260206004820152603e60248201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960448201527f204c4556454c312063616e2061637469766174652f64657072656361746500006064820152608401610981565b80548490829060ff191660018360038111156116d7576116d7614fb1565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161172291610100900460ff1690889061567e565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806108505760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610981565b600061179b613745565b6101608501516001600160a01b03811633146118055760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610981565b600161181082613872565b600381111561182157611821614fb1565b146118785760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b6064820152608401610981565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc91906156a4565b905060016118e9826138f5565b60038111156118fa576118fa614fb1565b146119575760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f7420666f756e64206f72206e6f746044820152662061637469766560c81b6064820152608401610981565b6119826bffffffffffffffffffffffff85166bffffffffffffffffffffffff19606085901b166156c1565b808852600090815261012f6020526040902054156119da5760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610981565b6119e387613983565b8751600090815261012f602052604090819020919091555163e3638ea360e01b81526001600160a01b0382169063e3638ea390611a24908a9060040161578c565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b50505060c0880151611a9391506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613818565b61014087015115611b3c57611b3c86826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0491906156a4565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613818565b61012087015115611be557611be586826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906156a4565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613818565b61012d5460e0880151611c2a916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613818565b6000876101000151118015611cb25750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c91906156a4565b6001600160a01b0316866001600160a01b031614155b15611d5557611d5586836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d91906156a4565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613818565b611d7385886000015160405180602001604052806000815250613a02565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b88604051611dac919061578c565b60405180910390a25050845190505b949350505050565b611dcb613745565b42611dde6101c083016101a0840161579b565b64ffffffffff161115611e2c5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610981565b610d12611e3e368390038301836157b6565b60006001613a35565b6000805160206159cd8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff166003811115611f1457611f14614fb1565b14611f615760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e7420616c726561647920696e2074686520706f6f6c0000006044820152606401610981565b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcd91906156a4565b6001600160a01b03161461202d5760405162461bcd60e51b815260206004820152602160248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320706f6f6044820152601b60fa1b6064820152608401610981565b600183600381111561204157612041614fb1565b1480156120b857506040516301ffc9a760e01b8152639077062160e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015612094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b89190615661565b80612149575060038360038111156120d2576120d2614fb1565b14801561214957506040516301ffc9a760e01b8152632dd9c4bb60e21b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015612125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121499190615661565b806121da5750600283600381111561216357612163614fb1565b1480156121da57506040516301ffc9a760e01b815263da40804f60e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da9190615661565b6122265760405162461bcd60e51b815260206004820152601e60248201527f506f6c696379506f6f6c3a204e6f7420746865207269676874206b696e6400006044820152606401610981565b8054600160ff198216811783558491839161ffff199091161761010083600381111561225457612254614fb1565b0217905550600383600381111561226d5761226d614fb1565b0361241a5760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122db91906156a4565b90506001600160a01b03811615612348576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b15801561232f57600080fd5b505af1158015612343573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123aa91906156a4565b90506001600160a01b03811615612417576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156123fe57600080fd5b505af1158015612412573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161245692919061567e565b60405180910390a250505050565b6000805160206159cd8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156124e957600080fd5b505afa1580156124fd573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff16600381111561253257612532614fb1565b1461257f5760405162461bcd60e51b815260206004820152601860248201527f436f6d706f6e656e74206e6f74206465707265636174656400000000000000006044820152606401610981565b60018154610100900460ff16600381111561259c5761259c614fb1565b0361266457826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126039190615511565b1561265f5760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610981565b6129d6565b60028154610100900460ff16600381111561268157612681614fb1565b0361274857826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190615511565b1561265f5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b6064820152608401610981565b60038154610100900460ff16600381111561276557612765614fb1565b036129d6576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d19190615511565b156128335760405162461bcd60e51b815260206004820152602c60248201527f43616e27742072656d6f76652061205072656d69756d734163636f756e74207760448201526b697468207072656d69756d7360a01b6064820152608401610981565b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612873573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289791906156a4565b90506001600160a01b03811615612904576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296691906156a4565b90506001600160a01b038116156129d3576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b1580156129ba57600080fd5b505af11580156129ce573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612a1d91610100900460ff169060009061567e565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b038216612ab45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610981565b506001600160a01b0316600090815260fe602052604090205490565b612ad8613745565b610dd2612aea368490038401846157b6565b826000613a35565b600080516020615a148339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612b7757600080fd5b505afa158015612b8b573d6000803e3d6000fd5b50505050610d12613ef5565b612b9f613745565b60005b81811015610c005742838383818110612bbd57612bbd6157d3565b90506101c002016101a0016020810190612bd7919061579b565b64ffffffffff161115612c255760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610981565b612c51838383818110612c3a57612c3a6157d3565b90506101c00201803603810190611e3e91906157b6565b80612c5b816157e9565b915050612ba2565b606060fc8054610865906153f8565b610dd2338383613f32565b612c87338361311d565b612ca35760405162461bcd60e51b81526004016109819061542c565b610ac384848484614001565b6060612cba82613050565b6000612cc4614034565b90506000815111612ce45760405180602001604052806000815250612d0f565b80612cee84614044565b604051602001612cff929190615802565b6040516020818303038152906040525b9392505050565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b6000805160206159cd8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612dca57600080fd5b505afa158015612dde573d6000803e3d6000fd5b50505050610dd2826140d7565b6000612df5613745565b6000612e008461378b565b90506001816003811115612e1657612e16614fb1565b1480612e3357506002816003811115612e3157612e31614fb1565b145b612e915760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610981565b60003360405163f3fef3a360e01b81526001600160a01b038083166004830152602482018790529192509086169063f3fef3a3906044016020604051808303816000875af1158015612ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0b9190615511565b95945050505050565b612f1c613745565b610dd2612f2e368490038401846157b6565b82612f3a576000612f40565b83602001355b6000613a35565b60006001600160e01b031982166380ac58cd60e01b1480612f7857506001600160e01b03198216635b5e139f60e01b145b8061085057506301ffc9a760e01b6001600160e01b0319831614610850565b600054610100900460ff16612fbe5760405162461bcd60e51b815260040161098190615831565b565b600054610100900460ff16612fe75760405162461bcd60e51b815260040161098190615831565b610dd282826141a7565b600054610100900460ff166130185760405162461bcd60e51b815260040161098190615831565b612fbe6141e7565b600054610100900460ff166130475760405162461bcd60e51b815260040161098190615831565b610d12816140d7565b600081815260fd60205260409020546001600160a01b0316610d125760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610981565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906130e482611731565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061312983611731565b9050806001600160a01b0316846001600160a01b0316148061315057506131508185612d16565b80611dbb5750836001600160a01b031661316984610ac9565b6001600160a01b031614949350505050565b826001600160a01b031661318e82611731565b6001600160a01b0316146131b45760405162461bcd60e51b81526004016109819061587c565b6001600160a01b0382166132165760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610981565b613223838383600161421a565b826001600160a01b031661323682611731565b6001600160a01b03161461325c5760405162461bcd60e51b81526004016109819061587c565b600081815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080546000190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020615a148339815191526000805160206159cd8339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561338957600080fd5b505afa15801561339d573d6000803e3d6000fd5b5050505060008390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561340e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343291906156a4565b6001600160a01b03161461349a5760405162461bcd60e51b815260206004820152602960248201527f43616e27742075706772616465206368616e67696e6720746865206163636573604482015268399036b0b730b3b2b960b91b6064820152608401610981565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352691906156a4565b6001600160a01b031614610ac35760405162461bcd60e51b815260206004820152602360248201527f43616e27742075706772616465206368616e67696e67207468652063757272656044820152626e637960e81b6064820152608401610981565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156135bb57610c0083614227565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613615575060408051601f3d908101601f1916820190925261361291810190615511565b60015b6136785760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610981565b6000805160206159ad83398151915281146136e75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610981565b50610c008383836142c3565b6136fb6142e8565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff1615612fbe5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610981565b6001600160a01b038116600090815261012e6020526040812060018154610100900460ff1660038111156137c1576137c1614fb1565b1461380e5760405162461bcd60e51b815260206004820152601a60248201527f436f6d706f6e656e74206973206e6f7420616e2065546f6b656e0000000000006044820152606401610981565b5460ff1692915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ac3908590614331565b6001600160a01b038116600090815261012e6020526040812060028154610100900460ff1660038111156138a8576138a8614fb1565b1461380e5760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e74206973206e6f742061205269736b4d6f64756c650000006044820152606401610981565b6001600160a01b038116600090815261012e6020526040812060038154610100900460ff16600381111561392b5761392b614fb1565b1461380e5760405162461bcd60e51b815260206004820152602260248201527f436f6d706f6e656e74206973206e6f742061205072656d69756d734163636f756044820152611b9d60f21b6064820152608401610981565b600081604051602001613996919061578c565b60408051601f1981840301815291905280516020909101209050806139fd5760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610981565b919050565b613a0c8383614406565b613a19600084848461459f565b610c005760405162461bcd60e51b8152600401610981906158c1565b613a3e8361469d565b6101608301518180613a5857506001600160a01b03811633145b613aa45760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610981565b821580613abc575042846101a0015164ffffffffff16115b613b085760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610981565b6000613b1382613872565b90506001816003811115613b2957613b29614fb1565b1480613b4657506002816003811115613b4457613b44614fb1565b145b613bb85760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e730000000000006064820152608401610981565b8460200151841115613c055760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610981565b600080851190506000836001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7091906156a4565b9050613c7b816138f5565b92506001836003811115613c9157613c91614fb1565b1480613cae57506002836003811115613cac57613cac614fb1565b145b613d2c5760405162461bcd60e51b815260206004820152604360248201527f5072656d69756d734163636f756e74206d75737420626520616374697665206f60448201527f72206465707265636174656420746f2070726f63657373207265736f6c7574696064820152626f6e7360e81b608482015260a401610981565b8651600090815261012f60205260408120558115613dbe576000613d538860000151611731565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613d869084908c908c90600401615913565b600060405180830381600087803b158015613da057600080fd5b505af1158015613db4573d6000803e3d6000fd5b5050505050613e1d565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613dea908a9060040161578c565b600060405180830381600087803b158015613e0457600080fd5b505af1158015613e18573d6000803e3d6000fd5b505050505b6020870151604051636a448ef160e01b815260048101919091526001600160a01b03851690636a448ef190602401600060405180830381600087803b158015613e6557600080fd5b505af1158015613e79573d6000803e3d6000fd5b5050505086600001518761016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e88604051613ec291815260200190565b60405180910390a38515613ee1578651613edc9087614704565b613eec565b8651613eec9061484d565b50505050505050565b613efd613745565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586137283390565b816001600160a01b0316836001600160a01b031603613f935760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610981565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61400c84848461317b565b6140188484848461459f565b610ac35760405162461bcd60e51b8152600401610981906158c1565b60606101308054610865906153f8565b606060006140518361490d565b600101905060008167ffffffffffffffff81111561407157614071614db4565b6040519080825280601f01601f19166020018201604052801561409b576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846140a557509392505050565b6001600160a01b0381166141455760405162461bcd60e51b815260206004820152602f60248201527f506f6c696379506f6f6c3a2074726561737572792063616e6e6f74206265207460448201526e6865207a65726f206164647265737360881b6064820152608401610981565b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b600054610100900460ff166141ce5760405162461bcd60e51b815260040161098190615831565b60fb6141da83826155a1565b5060fc610c0082826155a1565b600054610100900460ff1661420e5760405162461bcd60e51b815260040161098190615831565b6033805460ff19169055565b614222613745565b610ac3565b6001600160a01b0381163b6142945760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610981565b6000805160206159ad83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6142cc836149e5565b6000825111806142d95750805b15610c0057610ac38383614a25565b60335460ff16612fbe5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610981565b6000614386826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a4a9092919063ffffffff16565b90508051600014806143a75750808060200190518101906143a79190615661565b610c005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610981565b6001600160a01b03821661445c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610981565b600081815260fd60205260409020546001600160a01b0316156144c15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610981565b6144cf60008383600161421a565b600081815260fd60205260409020546001600160a01b0316156145345760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610981565b6001600160a01b038216600081815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561469557604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906145e3903390899088908890600401615940565b6020604051808303816000875af192505050801561461e575060408051601f3d908101601f1916820190925261461b91810190615973565b60015b61467b573d80801561464c576040519150601f19603f3d011682016040523d82523d6000602084013e614651565b606091505b5080516000036146735760405162461bcd60e51b8152600401610981906158c1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611dbb565b506001611dbb565b8051158015906146c557508051600090815261012f60205260409020546146c382613983565b145b610d125760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610981565b600061470f83611731565b90506001600160a01b0381163b61472557505050565b61473681633ece0a8960e01b614a59565b61473f57505050565b60006001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af11580156147ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147cf9190615973565b90506001600160e01b03198116636b140e9f60e11b14610ac35760405162461bcd60e51b815260206004820152603360248201527f506f6c696379506f6f6c3a20496e76616c69642072657475726e2076616c756560448201527210333937b69024a837b634b1bca437b63232b960691b6064820152608401610981565b600061485882611731565b90506001600160a01b0381163b61486d575050565b61487e81633ece0a8960e01b614a59565b614886575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1925050508015614905575060408051601f3d908101601f1916820190925261490291810190615973565b60015b610c00575050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061494c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614978576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061499657662386f26fc10000830492506010015b6305f5e10083106149ae576305f5e100830492506008015b61271083106149c257612710830492506004015b606483106149d4576064830492506002015b600a83106108505760010192915050565b6149ee81614227565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612d0f83836040518060600160405280602781526020016159ed60279139614a75565b6060611dbb8484600085614aed565b6000614a6483614bc8565b8015612d0f5750612d0f8383614bfb565b6060600080856001600160a01b031685604051614a929190615990565b600060405180830381855af49150503d8060008114614acd576040519150601f19603f3d011682016040523d82523d6000602084013e614ad2565b606091505b5091509150614ae386838387614c80565b9695505050505050565b606082471015614b4e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610981565b600080866001600160a01b03168587604051614b6a9190615990565b60006040518083038185875af1925050503d8060008114614ba7576040519150601f19603f3d011682016040523d82523d6000602084013e614bac565b606091505b5091509150614bbd87838387614c80565b979650505050505050565b6000614bdb826301ffc9a760e01b614bfb565b80156108505750614bf4826001600160e01b0319614bfb565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015614c6d575060208210155b8015614bbd575015159695505050505050565b60608315614cef578251600003614ce8576001600160a01b0385163b614ce85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610981565b5081611dbb565b611dbb8383815115614d045781518083602001fd5b8060405162461bcd60e51b81526004016109819190614da1565b6001600160e01b031981168114610d1257600080fd5b600060208284031215614d4657600080fd5b8135612d0f81614d1e565b60005b83811015614d6c578181015183820152602001614d54565b50506000910152565b60008151808452614d8d816020860160208601614d51565b601f01601f19169290920160200192915050565b602081526000612d0f6020830184614d75565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715614dee57614dee614db4565b60405290565b600082601f830112614e0557600080fd5b813567ffffffffffffffff80821115614e2057614e20614db4565b604051601f8301601f19908116603f01168101908282118183101715614e4857614e48614db4565b81604052838152866020858801011115614e6157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610d1257600080fd5b600080600060608486031215614eab57600080fd5b833567ffffffffffffffff80821115614ec357600080fd5b614ecf87838801614df4565b94506020860135915080821115614ee557600080fd5b50614ef286828701614df4565b9250506040840135614f0381614e81565b809150509250925092565b600060208284031215614f2057600080fd5b5035919050565b60008060408385031215614f3a57600080fd5b8235614f4581614e81565b946020939093013593505050565b600080600060608486031215614f6857600080fd5b8335614f7381614e81565b92506020840135614f8381614e81565b929592945050506040919091013590565b600060208284031215614fa657600080fd5b8135612d0f81614e81565b634e487b7160e01b600052602160045260246000fd5b60048110610d1257634e487b7160e01b600052602160045260246000fd5b60208101614ff283614fc7565b91905290565b6000806040838503121561500b57600080fd5b823561501681614e81565b9150602083013567ffffffffffffffff81111561503257600080fd5b61503e85828601614df4565b9150509250929050565b60006020828403121561505a57600080fd5b813567ffffffffffffffff81111561507157600080fd5b611dbb84828501614df4565b60048110610d1257600080fd5b6000806040838503121561509d57600080fd5b82356150a881614e81565b915060208301356150b88161507d565b809150509250929050565b80356139fd81614e81565b803564ffffffffff811681146139fd57600080fd5b60006101c082840312156150f657600080fd5b6150fe614dca565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016061517c8184016150c3565b9082015261018061518e8382016150ce565b908201526101a06151a08382016150ce565b9082015292915050565b60008060008061022085870312156151c157600080fd5b6151cb86866150e3565b93506101c08501356151dc81614e81565b92506101e08501356151ed81614e81565b91506102008501356bffffffffffffffffffffffff8116811461520f57600080fd5b939692955090935050565b60006101c0828403121561522d57600080fd5b50919050565b60006101c0828403121561524657600080fd5b612d0f838361521a565b6000806101e0838503121561526457600080fd5b61526e848461521a565b946101c0939093013593505050565b6000806020838503121561529057600080fd5b823567ffffffffffffffff808211156152a857600080fd5b818501915085601f8301126152bc57600080fd5b8135818111156152cb57600080fd5b8660206101c0830285010111156152e157600080fd5b60209290920196919550909350505050565b8015158114610d1257600080fd5b6000806040838503121561531457600080fd5b823561531f81614e81565b915060208301356150b8816152f3565b6000806000806080858703121561534557600080fd5b843561535081614e81565b9350602085013561536081614e81565b925060408501359150606085013567ffffffffffffffff81111561538357600080fd5b61538f87828801614df4565b91505092959194509250565b600080604083850312156153ae57600080fd5b82356153b981614e81565b915060208301356150b881614e81565b6000806101e083850312156153dd57600080fd5b6153e7848461521a565b91506101c08301356150b8816152f3565b600181811c9082168061540c57607f821691505b60208210810361522d57634e487b7160e01b600052602260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561552357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108505761085061552a565b601f821115610c0057600081815260208120601f850160051c8101602086101561557a5750805b601f850160051c820191505b8181101561559957828155600101615586565b505050505050565b815167ffffffffffffffff8111156155bb576155bb614db4565b6155cf816155c984546153f8565b84615553565b602080601f83116001811461560457600084156155ec5750858301515b600019600386901b1c1916600185901b178555615599565b600085815260208120601f198616915b8281101561563357888601518255948401946001909101908401615614565b50858210156156515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561567357600080fd5b8151612d0f816152f3565b6040810161568b84614fc7565b83825261569783614fc7565b8260208301529392505050565b6000602082840312156156b657600080fd5b8151612d0f81614e81565b808201808211156108505761085061552a565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152506101408082015181840152506101608082015161575d828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610ac3565b6101c0810161085082846156d4565b6000602082840312156157ad57600080fd5b612d0f826150ce565b60006101c082840312156157c957600080fd5b612d0f83836150e3565b634e487b7160e01b600052603260045260246000fd5b6000600182016157fb576157fb61552a565b5060010190565b60008351615814818460208801614d51565b835190830190615828818360208801614d51565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0384168152610200810161593160208301856156d4565b826101e0830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614ae390830184614d75565b60006020828403121561598557600080fd5b8151612d0f81614d1e565b600082516159a2818460208701614d51565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122064ff4760b261111df66ec957f8e35c01fe2e9b480713db48b0464e2393b685e864736f6c63430008100033",
1414
- "linkReferences": {},
1415
- "deployedLinkReferences": {}
1416
- }