@lukso/lsp8-contracts 0.16.7 → 0.18.1

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 (88) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +99 -4
  3. package/artifacts/IAccessControlExtended.json +285 -0
  4. package/artifacts/ILSP8CappedBalance.json +27 -0
  5. package/artifacts/ILSP8CappedSupply.json +27 -0
  6. package/artifacts/ILSP8IdentifiableDigitalAsset.json +6 -3
  7. package/artifacts/ILSP8Mintable.json +62 -0
  8. package/artifacts/ILSP8NonTransferable.json +116 -0
  9. package/artifacts/ILSP8Revokable.json +112 -0
  10. package/artifacts/LSP8Burnable.json +7 -4
  11. package/artifacts/LSP8BurnableInitAbstract.json +7 -4
  12. package/artifacts/LSP8CappedBalanceAbstract.json +1285 -0
  13. package/artifacts/LSP8CappedBalanceInitAbstract.json +1293 -0
  14. package/artifacts/{LSP8CappedSupply.json → LSP8CappedSupplyAbstract.json} +8 -15
  15. package/artifacts/LSP8CappedSupplyInitAbstract.json +7 -14
  16. package/artifacts/LSP8CustomizableToken.json +1781 -0
  17. package/artifacts/LSP8CustomizableTokenInit.json +1776 -0
  18. package/artifacts/LSP8Enumerable.json +7 -4
  19. package/artifacts/LSP8EnumerableInitAbstract.json +7 -4
  20. package/artifacts/LSP8IdentifiableDigitalAsset.json +6 -3
  21. package/artifacts/LSP8IdentifiableDigitalAssetInitAbstract.json +6 -3
  22. package/artifacts/LSP8Mintable.json +369 -5
  23. package/artifacts/LSP8MintableAbstract.json +1328 -0
  24. package/artifacts/LSP8MintableInit.json +369 -5
  25. package/artifacts/LSP8MintableInitAbstract.json +1336 -0
  26. package/artifacts/LSP8NonTransferableAbstract.json +1373 -0
  27. package/artifacts/LSP8NonTransferableInitAbstract.json +1381 -0
  28. package/artifacts/LSP8RevokableAbstract.json +1354 -0
  29. package/artifacts/LSP8RevokableInitAbstract.json +1362 -0
  30. package/artifacts/LSP8Votes.json +7 -4
  31. package/artifacts/LSP8VotesInitAbstract.json +7 -4
  32. package/contracts/ILSP8IdentifiableDigitalAsset.sol +1 -1
  33. package/contracts/LSP8Constants.sol +1 -1
  34. package/contracts/LSP8Errors.sol +1 -1
  35. package/contracts/LSP8IdentifiableDigitalAsset.sol +73 -114
  36. package/contracts/LSP8IdentifiableDigitalAssetInitAbstract.sol +69 -116
  37. package/contracts/extensions/AccessControlExtended/AccessControlExtendedAbstract.sol +378 -0
  38. package/contracts/extensions/AccessControlExtended/AccessControlExtendedConstants.sol +13 -0
  39. package/contracts/extensions/AccessControlExtended/AccessControlExtendedErrors.sol +23 -0
  40. package/contracts/extensions/AccessControlExtended/AccessControlExtendedInitAbstract.sol +390 -0
  41. package/contracts/extensions/AccessControlExtended/IAccessControlExtended.sol +51 -0
  42. package/contracts/extensions/{LSP8Burnable.sol → LSP8Burnable/LSP8Burnable.sol} +7 -6
  43. package/contracts/extensions/{LSP8BurnableInitAbstract.sol → LSP8Burnable/LSP8BurnableInitAbstract.sol} +7 -6
  44. package/contracts/extensions/LSP8CappedBalance/ILSP8CappedBalance.sol +11 -0
  45. package/contracts/extensions/LSP8CappedBalance/LSP8CappedBalanceAbstract.sol +124 -0
  46. package/contracts/extensions/LSP8CappedBalance/LSP8CappedBalanceErrors.sol +9 -0
  47. package/contracts/extensions/LSP8CappedBalance/LSP8CappedBalanceInitAbstract.sol +174 -0
  48. package/contracts/extensions/LSP8CappedSupply/ILSP8CappedSupply.sol +11 -0
  49. package/contracts/extensions/LSP8CappedSupply/LSP8CappedSupplyAbstract.sol +59 -0
  50. package/contracts/extensions/LSP8CappedSupply/LSP8CappedSupplyErrors.sol +6 -0
  51. package/contracts/extensions/LSP8CappedSupply/LSP8CappedSupplyInitAbstract.sol +97 -0
  52. package/contracts/extensions/{LSP8Enumerable.sol → LSP8Enumerable/LSP8Enumerable.sol} +2 -2
  53. package/contracts/extensions/{LSP8EnumerableInitAbstract.sol → LSP8Enumerable/LSP8EnumerableInitAbstract.sol} +2 -2
  54. package/contracts/extensions/LSP8Mintable/ILSP8Mintable.sol +27 -0
  55. package/contracts/extensions/LSP8Mintable/LSP8MintableAbstract.sol +105 -0
  56. package/contracts/extensions/LSP8Mintable/LSP8MintableErrors.sol +5 -0
  57. package/contracts/extensions/LSP8Mintable/LSP8MintableInitAbstract.sol +155 -0
  58. package/contracts/extensions/LSP8NonTransferable/ILSP8NonTransferable.sol +54 -0
  59. package/contracts/extensions/LSP8NonTransferable/LSP8NonTransferableAbstract.sol +199 -0
  60. package/contracts/extensions/LSP8NonTransferable/LSP8NonTransferableErrors.sol +14 -0
  61. package/contracts/extensions/LSP8NonTransferable/LSP8NonTransferableInitAbstract.sol +255 -0
  62. package/contracts/extensions/LSP8Revokable/ILSP8Revokable.sol +37 -0
  63. package/contracts/extensions/LSP8Revokable/LSP8RevokableAbstract.sol +140 -0
  64. package/contracts/extensions/LSP8Revokable/LSP8RevokableErrors.sol +4 -0
  65. package/contracts/extensions/LSP8Revokable/LSP8RevokableInitAbstract.sol +192 -0
  66. package/contracts/extensions/{LSP8Votes.sol → LSP8Votes/LSP8Votes.sol} +3 -4
  67. package/contracts/extensions/{LSP8VotesConstants.sol → LSP8Votes/LSP8VotesConstants.sol} +1 -1
  68. package/contracts/extensions/{LSP8VotesInitAbstract.sol → LSP8Votes/LSP8VotesInitAbstract.sol} +3 -3
  69. package/contracts/presets/LSP8CustomizableToken.sol +277 -0
  70. package/contracts/presets/LSP8CustomizableTokenConstants.sol +32 -0
  71. package/contracts/presets/LSP8CustomizableTokenInit.sol +318 -0
  72. package/contracts/presets/LSP8Mintable.sol +13 -28
  73. package/contracts/presets/LSP8MintableInit.sol +13 -6
  74. package/dist/abi.cjs +8351 -136
  75. package/dist/abi.d.cts +12122 -266
  76. package/dist/abi.d.mts +12122 -266
  77. package/dist/abi.d.ts +12122 -266
  78. package/dist/abi.mjs +8335 -136
  79. package/dist/constants.cjs +21 -0
  80. package/dist/constants.d.cts +12 -1
  81. package/dist/constants.d.mts +12 -1
  82. package/dist/constants.d.ts +12 -1
  83. package/dist/constants.mjs +16 -1
  84. package/package.json +32 -9
  85. package/contracts/extensions/LSP8CappedSupply.sol +0 -85
  86. package/contracts/extensions/LSP8CappedSupplyInitAbstract.sol +0 -88
  87. package/contracts/presets/ILSP8Mintable.sol +0 -33
  88. package/contracts/presets/LSP8MintableInitAbstract.sol +0 -62
@@ -0,0 +1,1781 @@
1
+ {
2
+ "_format": "hh3-artifact-1",
3
+ "contractName": "LSP8CustomizableToken",
4
+ "sourceName": "contracts/presets/LSP8CustomizableToken.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "name_",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "symbol_",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "newOwner_",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "uint256",
25
+ "name": "lsp4TokenType_",
26
+ "type": "uint256"
27
+ },
28
+ {
29
+ "internalType": "uint256",
30
+ "name": "lsp8TokenIdFormat_",
31
+ "type": "uint256"
32
+ },
33
+ {
34
+ "components": [
35
+ {
36
+ "internalType": "bool",
37
+ "name": "isMintable",
38
+ "type": "bool"
39
+ },
40
+ {
41
+ "internalType": "bytes32[]",
42
+ "name": "initialMintTokenIds",
43
+ "type": "bytes32[]"
44
+ }
45
+ ],
46
+ "internalType": "struct LSP8MintableParams",
47
+ "name": "mintableParams",
48
+ "type": "tuple"
49
+ },
50
+ {
51
+ "components": [
52
+ {
53
+ "internalType": "uint256",
54
+ "name": "tokenBalanceCap",
55
+ "type": "uint256"
56
+ },
57
+ {
58
+ "internalType": "uint256",
59
+ "name": "tokenSupplyCap",
60
+ "type": "uint256"
61
+ }
62
+ ],
63
+ "internalType": "struct LSP8CappedParams",
64
+ "name": "cappedParams",
65
+ "type": "tuple"
66
+ },
67
+ {
68
+ "components": [
69
+ {
70
+ "internalType": "uint256",
71
+ "name": "transferLockStart",
72
+ "type": "uint256"
73
+ },
74
+ {
75
+ "internalType": "uint256",
76
+ "name": "transferLockEnd",
77
+ "type": "uint256"
78
+ }
79
+ ],
80
+ "internalType": "struct LSP8NonTransferableParams",
81
+ "name": "nonTransferableParams",
82
+ "type": "tuple"
83
+ },
84
+ {
85
+ "components": [
86
+ {
87
+ "internalType": "bool",
88
+ "name": "isRevokable",
89
+ "type": "bool"
90
+ }
91
+ ],
92
+ "internalType": "struct LSP8RevokableParams",
93
+ "name": "revokableParams",
94
+ "type": "tuple"
95
+ }
96
+ ],
97
+ "stateMutability": "nonpayable",
98
+ "type": "constructor"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "AccessControlBadConfirmation",
103
+ "type": "error"
104
+ },
105
+ {
106
+ "inputs": [],
107
+ "name": "AccessControlCannotSetAdminForDefaultAdminRole",
108
+ "type": "error"
109
+ },
110
+ {
111
+ "inputs": [
112
+ {
113
+ "internalType": "address",
114
+ "name": "account",
115
+ "type": "address"
116
+ },
117
+ {
118
+ "internalType": "bytes32",
119
+ "name": "neededRole",
120
+ "type": "bytes32"
121
+ }
122
+ ],
123
+ "name": "AccessControlUnauthorizedAccount",
124
+ "type": "error"
125
+ },
126
+ {
127
+ "inputs": [],
128
+ "name": "ERC725Y_DataKeysValuesEmptyArray",
129
+ "type": "error"
130
+ },
131
+ {
132
+ "inputs": [],
133
+ "name": "ERC725Y_DataKeysValuesLengthMismatch",
134
+ "type": "error"
135
+ },
136
+ {
137
+ "inputs": [],
138
+ "name": "ERC725Y_MsgValueDisallowed",
139
+ "type": "error"
140
+ },
141
+ {
142
+ "inputs": [
143
+ {
144
+ "internalType": "bytes",
145
+ "name": "storedData",
146
+ "type": "bytes"
147
+ }
148
+ ],
149
+ "name": "InvalidExtensionAddress",
150
+ "type": "error"
151
+ },
152
+ {
153
+ "inputs": [
154
+ {
155
+ "internalType": "bytes",
156
+ "name": "data",
157
+ "type": "bytes"
158
+ }
159
+ ],
160
+ "name": "InvalidFunctionSelector",
161
+ "type": "error"
162
+ },
163
+ {
164
+ "inputs": [],
165
+ "name": "LSP4TokenNameNotEditable",
166
+ "type": "error"
167
+ },
168
+ {
169
+ "inputs": [],
170
+ "name": "LSP4TokenSymbolNotEditable",
171
+ "type": "error"
172
+ },
173
+ {
174
+ "inputs": [],
175
+ "name": "LSP4TokenTypeNotEditable",
176
+ "type": "error"
177
+ },
178
+ {
179
+ "inputs": [
180
+ {
181
+ "internalType": "uint256",
182
+ "name": "callIndex",
183
+ "type": "uint256"
184
+ }
185
+ ],
186
+ "name": "LSP8BatchCallFailed",
187
+ "type": "error"
188
+ },
189
+ {
190
+ "inputs": [],
191
+ "name": "LSP8CannotSendToAddressZero",
192
+ "type": "error"
193
+ },
194
+ {
195
+ "inputs": [],
196
+ "name": "LSP8CannotUpdateTransferLockPeriod",
197
+ "type": "error"
198
+ },
199
+ {
200
+ "inputs": [],
201
+ "name": "LSP8CannotUseAddressZeroAsOperator",
202
+ "type": "error"
203
+ },
204
+ {
205
+ "inputs": [
206
+ {
207
+ "internalType": "address",
208
+ "name": "to",
209
+ "type": "address"
210
+ },
211
+ {
212
+ "internalType": "uint256",
213
+ "name": "currentBalance",
214
+ "type": "uint256"
215
+ },
216
+ {
217
+ "internalType": "uint256",
218
+ "name": "tokenBalanceCap",
219
+ "type": "uint256"
220
+ }
221
+ ],
222
+ "name": "LSP8CappedBalanceExceeded",
223
+ "type": "error"
224
+ },
225
+ {
226
+ "inputs": [],
227
+ "name": "LSP8CappedSupplyCannotMintOverCap",
228
+ "type": "error"
229
+ },
230
+ {
231
+ "inputs": [],
232
+ "name": "LSP8InvalidTransferBatch",
233
+ "type": "error"
234
+ },
235
+ {
236
+ "inputs": [],
237
+ "name": "LSP8InvalidTransferLockPeriod",
238
+ "type": "error"
239
+ },
240
+ {
241
+ "inputs": [],
242
+ "name": "LSP8MintDisabled",
243
+ "type": "error"
244
+ },
245
+ {
246
+ "inputs": [
247
+ {
248
+ "internalType": "bytes32",
249
+ "name": "tokenId",
250
+ "type": "bytes32"
251
+ }
252
+ ],
253
+ "name": "LSP8NonExistentTokenId",
254
+ "type": "error"
255
+ },
256
+ {
257
+ "inputs": [
258
+ {
259
+ "internalType": "address",
260
+ "name": "operator",
261
+ "type": "address"
262
+ },
263
+ {
264
+ "internalType": "bytes32",
265
+ "name": "tokenId",
266
+ "type": "bytes32"
267
+ }
268
+ ],
269
+ "name": "LSP8NonExistingOperator",
270
+ "type": "error"
271
+ },
272
+ {
273
+ "inputs": [
274
+ {
275
+ "internalType": "bytes32",
276
+ "name": "tokenId",
277
+ "type": "bytes32"
278
+ },
279
+ {
280
+ "internalType": "address",
281
+ "name": "caller",
282
+ "type": "address"
283
+ }
284
+ ],
285
+ "name": "LSP8NotTokenOperator",
286
+ "type": "error"
287
+ },
288
+ {
289
+ "inputs": [
290
+ {
291
+ "internalType": "address",
292
+ "name": "tokenOwner",
293
+ "type": "address"
294
+ },
295
+ {
296
+ "internalType": "bytes32",
297
+ "name": "tokenId",
298
+ "type": "bytes32"
299
+ },
300
+ {
301
+ "internalType": "address",
302
+ "name": "caller",
303
+ "type": "address"
304
+ }
305
+ ],
306
+ "name": "LSP8NotTokenOwner",
307
+ "type": "error"
308
+ },
309
+ {
310
+ "inputs": [
311
+ {
312
+ "internalType": "address",
313
+ "name": "tokenReceiver",
314
+ "type": "address"
315
+ }
316
+ ],
317
+ "name": "LSP8NotifyTokenReceiverContractMissingLSP1Interface",
318
+ "type": "error"
319
+ },
320
+ {
321
+ "inputs": [
322
+ {
323
+ "internalType": "address",
324
+ "name": "tokenReceiver",
325
+ "type": "address"
326
+ }
327
+ ],
328
+ "name": "LSP8NotifyTokenReceiverIsEOA",
329
+ "type": "error"
330
+ },
331
+ {
332
+ "inputs": [
333
+ {
334
+ "internalType": "address",
335
+ "name": "operator",
336
+ "type": "address"
337
+ },
338
+ {
339
+ "internalType": "bytes32",
340
+ "name": "tokenId",
341
+ "type": "bytes32"
342
+ }
343
+ ],
344
+ "name": "LSP8OperatorAlreadyAuthorized",
345
+ "type": "error"
346
+ },
347
+ {
348
+ "inputs": [],
349
+ "name": "LSP8RevokableFeatureDisabled",
350
+ "type": "error"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "address",
356
+ "name": "caller",
357
+ "type": "address"
358
+ },
359
+ {
360
+ "internalType": "address",
361
+ "name": "tokenOwner",
362
+ "type": "address"
363
+ },
364
+ {
365
+ "internalType": "bytes32",
366
+ "name": "tokenId",
367
+ "type": "bytes32"
368
+ }
369
+ ],
370
+ "name": "LSP8RevokeOperatorNotAuthorized",
371
+ "type": "error"
372
+ },
373
+ {
374
+ "inputs": [],
375
+ "name": "LSP8TokenAlreadyTransferable",
376
+ "type": "error"
377
+ },
378
+ {
379
+ "inputs": [],
380
+ "name": "LSP8TokenContractCannotHoldValue",
381
+ "type": "error"
382
+ },
383
+ {
384
+ "inputs": [
385
+ {
386
+ "internalType": "bytes32",
387
+ "name": "tokenId",
388
+ "type": "bytes32"
389
+ }
390
+ ],
391
+ "name": "LSP8TokenIdAlreadyMinted",
392
+ "type": "error"
393
+ },
394
+ {
395
+ "inputs": [],
396
+ "name": "LSP8TokenIdFormatNotEditable",
397
+ "type": "error"
398
+ },
399
+ {
400
+ "inputs": [],
401
+ "name": "LSP8TokenIdsDataEmptyArray",
402
+ "type": "error"
403
+ },
404
+ {
405
+ "inputs": [],
406
+ "name": "LSP8TokenIdsDataLengthMismatch",
407
+ "type": "error"
408
+ },
409
+ {
410
+ "inputs": [],
411
+ "name": "LSP8TokenOwnerCannotBeOperator",
412
+ "type": "error"
413
+ },
414
+ {
415
+ "inputs": [
416
+ {
417
+ "internalType": "bytes32",
418
+ "name": "tokenId",
419
+ "type": "bytes32"
420
+ },
421
+ {
422
+ "internalType": "address",
423
+ "name": "oldOwner",
424
+ "type": "address"
425
+ },
426
+ {
427
+ "internalType": "address",
428
+ "name": "newOwner",
429
+ "type": "address"
430
+ }
431
+ ],
432
+ "name": "LSP8TokenOwnerChanged",
433
+ "type": "error"
434
+ },
435
+ {
436
+ "inputs": [],
437
+ "name": "LSP8TransferDisabled",
438
+ "type": "error"
439
+ },
440
+ {
441
+ "inputs": [
442
+ {
443
+ "internalType": "bytes4",
444
+ "name": "functionSelector",
445
+ "type": "bytes4"
446
+ }
447
+ ],
448
+ "name": "NoExtensionFoundForFunctionSelector",
449
+ "type": "error"
450
+ },
451
+ {
452
+ "inputs": [],
453
+ "name": "OwnableCannotSetZeroAddressAsOwner",
454
+ "type": "error"
455
+ },
456
+ {
457
+ "anonymous": false,
458
+ "inputs": [
459
+ {
460
+ "indexed": true,
461
+ "internalType": "bytes32",
462
+ "name": "dataKey",
463
+ "type": "bytes32"
464
+ },
465
+ {
466
+ "indexed": false,
467
+ "internalType": "bytes",
468
+ "name": "dataValue",
469
+ "type": "bytes"
470
+ }
471
+ ],
472
+ "name": "DataChanged",
473
+ "type": "event"
474
+ },
475
+ {
476
+ "anonymous": false,
477
+ "inputs": [
478
+ {
479
+ "indexed": true,
480
+ "internalType": "bool",
481
+ "name": "enabled",
482
+ "type": "bool"
483
+ }
484
+ ],
485
+ "name": "MintingStatusChanged",
486
+ "type": "event"
487
+ },
488
+ {
489
+ "anonymous": false,
490
+ "inputs": [
491
+ {
492
+ "indexed": true,
493
+ "internalType": "address",
494
+ "name": "operator",
495
+ "type": "address"
496
+ },
497
+ {
498
+ "indexed": true,
499
+ "internalType": "address",
500
+ "name": "tokenOwner",
501
+ "type": "address"
502
+ },
503
+ {
504
+ "indexed": true,
505
+ "internalType": "bytes32",
506
+ "name": "tokenId",
507
+ "type": "bytes32"
508
+ },
509
+ {
510
+ "indexed": false,
511
+ "internalType": "bytes",
512
+ "name": "operatorNotificationData",
513
+ "type": "bytes"
514
+ }
515
+ ],
516
+ "name": "OperatorAuthorizationChanged",
517
+ "type": "event"
518
+ },
519
+ {
520
+ "anonymous": false,
521
+ "inputs": [
522
+ {
523
+ "indexed": true,
524
+ "internalType": "address",
525
+ "name": "operator",
526
+ "type": "address"
527
+ },
528
+ {
529
+ "indexed": true,
530
+ "internalType": "address",
531
+ "name": "tokenOwner",
532
+ "type": "address"
533
+ },
534
+ {
535
+ "indexed": true,
536
+ "internalType": "bytes32",
537
+ "name": "tokenId",
538
+ "type": "bytes32"
539
+ },
540
+ {
541
+ "indexed": false,
542
+ "internalType": "bool",
543
+ "name": "notified",
544
+ "type": "bool"
545
+ },
546
+ {
547
+ "indexed": false,
548
+ "internalType": "bytes",
549
+ "name": "operatorNotificationData",
550
+ "type": "bytes"
551
+ }
552
+ ],
553
+ "name": "OperatorRevoked",
554
+ "type": "event"
555
+ },
556
+ {
557
+ "anonymous": false,
558
+ "inputs": [
559
+ {
560
+ "indexed": true,
561
+ "internalType": "address",
562
+ "name": "previousOwner",
563
+ "type": "address"
564
+ },
565
+ {
566
+ "indexed": true,
567
+ "internalType": "address",
568
+ "name": "newOwner",
569
+ "type": "address"
570
+ }
571
+ ],
572
+ "name": "OwnershipTransferred",
573
+ "type": "event"
574
+ },
575
+ {
576
+ "anonymous": false,
577
+ "inputs": [
578
+ {
579
+ "indexed": true,
580
+ "internalType": "bool",
581
+ "name": "enabled",
582
+ "type": "bool"
583
+ }
584
+ ],
585
+ "name": "RevokableStatusChanged",
586
+ "type": "event"
587
+ },
588
+ {
589
+ "anonymous": false,
590
+ "inputs": [
591
+ {
592
+ "indexed": true,
593
+ "internalType": "bytes32",
594
+ "name": "role",
595
+ "type": "bytes32"
596
+ },
597
+ {
598
+ "indexed": true,
599
+ "internalType": "bytes32",
600
+ "name": "previousAdminRole",
601
+ "type": "bytes32"
602
+ },
603
+ {
604
+ "indexed": true,
605
+ "internalType": "bytes32",
606
+ "name": "newAdminRole",
607
+ "type": "bytes32"
608
+ }
609
+ ],
610
+ "name": "RoleAdminChanged",
611
+ "type": "event"
612
+ },
613
+ {
614
+ "anonymous": false,
615
+ "inputs": [
616
+ {
617
+ "indexed": true,
618
+ "internalType": "bytes32",
619
+ "name": "role",
620
+ "type": "bytes32"
621
+ },
622
+ {
623
+ "indexed": true,
624
+ "internalType": "address",
625
+ "name": "account",
626
+ "type": "address"
627
+ },
628
+ {
629
+ "indexed": true,
630
+ "internalType": "address",
631
+ "name": "sender",
632
+ "type": "address"
633
+ }
634
+ ],
635
+ "name": "RoleGranted",
636
+ "type": "event"
637
+ },
638
+ {
639
+ "anonymous": false,
640
+ "inputs": [
641
+ {
642
+ "indexed": true,
643
+ "internalType": "bytes32",
644
+ "name": "role",
645
+ "type": "bytes32"
646
+ },
647
+ {
648
+ "indexed": true,
649
+ "internalType": "address",
650
+ "name": "account",
651
+ "type": "address"
652
+ },
653
+ {
654
+ "indexed": true,
655
+ "internalType": "address",
656
+ "name": "sender",
657
+ "type": "address"
658
+ }
659
+ ],
660
+ "name": "RoleRevoked",
661
+ "type": "event"
662
+ },
663
+ {
664
+ "anonymous": false,
665
+ "inputs": [
666
+ {
667
+ "indexed": true,
668
+ "internalType": "bytes32",
669
+ "name": "tokenId",
670
+ "type": "bytes32"
671
+ },
672
+ {
673
+ "indexed": true,
674
+ "internalType": "bytes32",
675
+ "name": "dataKey",
676
+ "type": "bytes32"
677
+ },
678
+ {
679
+ "indexed": false,
680
+ "internalType": "bytes",
681
+ "name": "dataValue",
682
+ "type": "bytes"
683
+ }
684
+ ],
685
+ "name": "TokenIdDataChanged",
686
+ "type": "event"
687
+ },
688
+ {
689
+ "anonymous": false,
690
+ "inputs": [
691
+ {
692
+ "indexed": true,
693
+ "internalType": "address",
694
+ "name": "revoker",
695
+ "type": "address"
696
+ },
697
+ {
698
+ "indexed": true,
699
+ "internalType": "address",
700
+ "name": "from",
701
+ "type": "address"
702
+ },
703
+ {
704
+ "indexed": true,
705
+ "internalType": "address",
706
+ "name": "to",
707
+ "type": "address"
708
+ },
709
+ {
710
+ "indexed": false,
711
+ "internalType": "bytes32",
712
+ "name": "tokenId",
713
+ "type": "bytes32"
714
+ },
715
+ {
716
+ "indexed": false,
717
+ "internalType": "bytes",
718
+ "name": "data",
719
+ "type": "bytes"
720
+ }
721
+ ],
722
+ "name": "TokenRevoked",
723
+ "type": "event"
724
+ },
725
+ {
726
+ "anonymous": false,
727
+ "inputs": [
728
+ {
729
+ "indexed": false,
730
+ "internalType": "address",
731
+ "name": "operator",
732
+ "type": "address"
733
+ },
734
+ {
735
+ "indexed": true,
736
+ "internalType": "address",
737
+ "name": "from",
738
+ "type": "address"
739
+ },
740
+ {
741
+ "indexed": true,
742
+ "internalType": "address",
743
+ "name": "to",
744
+ "type": "address"
745
+ },
746
+ {
747
+ "indexed": true,
748
+ "internalType": "bytes32",
749
+ "name": "tokenId",
750
+ "type": "bytes32"
751
+ },
752
+ {
753
+ "indexed": false,
754
+ "internalType": "bool",
755
+ "name": "force",
756
+ "type": "bool"
757
+ },
758
+ {
759
+ "indexed": false,
760
+ "internalType": "bytes",
761
+ "name": "data",
762
+ "type": "bytes"
763
+ }
764
+ ],
765
+ "name": "Transfer",
766
+ "type": "event"
767
+ },
768
+ {
769
+ "anonymous": false,
770
+ "inputs": [
771
+ {
772
+ "indexed": true,
773
+ "internalType": "bool",
774
+ "name": "nonTransferabilityEnabled",
775
+ "type": "bool"
776
+ },
777
+ {
778
+ "indexed": true,
779
+ "internalType": "uint256",
780
+ "name": "start",
781
+ "type": "uint256"
782
+ },
783
+ {
784
+ "indexed": true,
785
+ "internalType": "uint256",
786
+ "name": "end",
787
+ "type": "uint256"
788
+ }
789
+ ],
790
+ "name": "TransferLockPeriodChanged",
791
+ "type": "event"
792
+ },
793
+ {
794
+ "stateMutability": "payable",
795
+ "type": "fallback"
796
+ },
797
+ {
798
+ "inputs": [],
799
+ "name": "DEFAULT_ADMIN_ROLE",
800
+ "outputs": [
801
+ {
802
+ "internalType": "bytes32",
803
+ "name": "",
804
+ "type": "bytes32"
805
+ }
806
+ ],
807
+ "stateMutability": "view",
808
+ "type": "function"
809
+ },
810
+ {
811
+ "inputs": [],
812
+ "name": "MINTER_ROLE",
813
+ "outputs": [
814
+ {
815
+ "internalType": "bytes32",
816
+ "name": "",
817
+ "type": "bytes32"
818
+ }
819
+ ],
820
+ "stateMutability": "view",
821
+ "type": "function"
822
+ },
823
+ {
824
+ "inputs": [],
825
+ "name": "NON_TRANSFERABLE_BYPASS_ROLE",
826
+ "outputs": [
827
+ {
828
+ "internalType": "bytes32",
829
+ "name": "",
830
+ "type": "bytes32"
831
+ }
832
+ ],
833
+ "stateMutability": "view",
834
+ "type": "function"
835
+ },
836
+ {
837
+ "inputs": [],
838
+ "name": "REVOKER_ROLE",
839
+ "outputs": [
840
+ {
841
+ "internalType": "bytes32",
842
+ "name": "",
843
+ "type": "bytes32"
844
+ }
845
+ ],
846
+ "stateMutability": "view",
847
+ "type": "function"
848
+ },
849
+ {
850
+ "inputs": [],
851
+ "name": "UNCAPPED_BALANCE_ROLE",
852
+ "outputs": [
853
+ {
854
+ "internalType": "bytes32",
855
+ "name": "",
856
+ "type": "bytes32"
857
+ }
858
+ ],
859
+ "stateMutability": "view",
860
+ "type": "function"
861
+ },
862
+ {
863
+ "inputs": [
864
+ {
865
+ "internalType": "address",
866
+ "name": "operator",
867
+ "type": "address"
868
+ },
869
+ {
870
+ "internalType": "bytes32",
871
+ "name": "tokenId",
872
+ "type": "bytes32"
873
+ },
874
+ {
875
+ "internalType": "bytes",
876
+ "name": "operatorNotificationData",
877
+ "type": "bytes"
878
+ }
879
+ ],
880
+ "name": "authorizeOperator",
881
+ "outputs": [],
882
+ "stateMutability": "nonpayable",
883
+ "type": "function"
884
+ },
885
+ {
886
+ "inputs": [
887
+ {
888
+ "internalType": "address",
889
+ "name": "tokenOwner",
890
+ "type": "address"
891
+ }
892
+ ],
893
+ "name": "balanceOf",
894
+ "outputs": [
895
+ {
896
+ "internalType": "uint256",
897
+ "name": "",
898
+ "type": "uint256"
899
+ }
900
+ ],
901
+ "stateMutability": "view",
902
+ "type": "function"
903
+ },
904
+ {
905
+ "inputs": [
906
+ {
907
+ "internalType": "bytes[]",
908
+ "name": "data",
909
+ "type": "bytes[]"
910
+ }
911
+ ],
912
+ "name": "batchCalls",
913
+ "outputs": [
914
+ {
915
+ "internalType": "bytes[]",
916
+ "name": "results",
917
+ "type": "bytes[]"
918
+ }
919
+ ],
920
+ "stateMutability": "nonpayable",
921
+ "type": "function"
922
+ },
923
+ {
924
+ "inputs": [
925
+ {
926
+ "internalType": "bytes32",
927
+ "name": "tokenId",
928
+ "type": "bytes32"
929
+ },
930
+ {
931
+ "internalType": "bytes",
932
+ "name": "data",
933
+ "type": "bytes"
934
+ }
935
+ ],
936
+ "name": "burn",
937
+ "outputs": [],
938
+ "stateMutability": "nonpayable",
939
+ "type": "function"
940
+ },
941
+ {
942
+ "inputs": [],
943
+ "name": "disableMinting",
944
+ "outputs": [],
945
+ "stateMutability": "nonpayable",
946
+ "type": "function"
947
+ },
948
+ {
949
+ "inputs": [],
950
+ "name": "disableRevokable",
951
+ "outputs": [],
952
+ "stateMutability": "nonpayable",
953
+ "type": "function"
954
+ },
955
+ {
956
+ "inputs": [
957
+ {
958
+ "internalType": "bytes32",
959
+ "name": "dataKey",
960
+ "type": "bytes32"
961
+ }
962
+ ],
963
+ "name": "getData",
964
+ "outputs": [
965
+ {
966
+ "internalType": "bytes",
967
+ "name": "dataValue",
968
+ "type": "bytes"
969
+ }
970
+ ],
971
+ "stateMutability": "view",
972
+ "type": "function"
973
+ },
974
+ {
975
+ "inputs": [
976
+ {
977
+ "internalType": "bytes32[]",
978
+ "name": "dataKeys",
979
+ "type": "bytes32[]"
980
+ }
981
+ ],
982
+ "name": "getDataBatch",
983
+ "outputs": [
984
+ {
985
+ "internalType": "bytes[]",
986
+ "name": "dataValues",
987
+ "type": "bytes[]"
988
+ }
989
+ ],
990
+ "stateMutability": "view",
991
+ "type": "function"
992
+ },
993
+ {
994
+ "inputs": [
995
+ {
996
+ "internalType": "bytes32[]",
997
+ "name": "tokenIds",
998
+ "type": "bytes32[]"
999
+ },
1000
+ {
1001
+ "internalType": "bytes32[]",
1002
+ "name": "dataKeys",
1003
+ "type": "bytes32[]"
1004
+ }
1005
+ ],
1006
+ "name": "getDataBatchForTokenIds",
1007
+ "outputs": [
1008
+ {
1009
+ "internalType": "bytes[]",
1010
+ "name": "dataValues",
1011
+ "type": "bytes[]"
1012
+ }
1013
+ ],
1014
+ "stateMutability": "view",
1015
+ "type": "function"
1016
+ },
1017
+ {
1018
+ "inputs": [
1019
+ {
1020
+ "internalType": "bytes32",
1021
+ "name": "tokenId",
1022
+ "type": "bytes32"
1023
+ },
1024
+ {
1025
+ "internalType": "bytes32",
1026
+ "name": "dataKey",
1027
+ "type": "bytes32"
1028
+ }
1029
+ ],
1030
+ "name": "getDataForTokenId",
1031
+ "outputs": [
1032
+ {
1033
+ "internalType": "bytes",
1034
+ "name": "dataValue",
1035
+ "type": "bytes"
1036
+ }
1037
+ ],
1038
+ "stateMutability": "view",
1039
+ "type": "function"
1040
+ },
1041
+ {
1042
+ "inputs": [
1043
+ {
1044
+ "internalType": "bytes32",
1045
+ "name": "tokenId",
1046
+ "type": "bytes32"
1047
+ }
1048
+ ],
1049
+ "name": "getOperatorsOf",
1050
+ "outputs": [
1051
+ {
1052
+ "internalType": "address[]",
1053
+ "name": "",
1054
+ "type": "address[]"
1055
+ }
1056
+ ],
1057
+ "stateMutability": "view",
1058
+ "type": "function"
1059
+ },
1060
+ {
1061
+ "inputs": [
1062
+ {
1063
+ "internalType": "bytes32",
1064
+ "name": "role",
1065
+ "type": "bytes32"
1066
+ }
1067
+ ],
1068
+ "name": "getRoleAdmin",
1069
+ "outputs": [
1070
+ {
1071
+ "internalType": "bytes32",
1072
+ "name": "",
1073
+ "type": "bytes32"
1074
+ }
1075
+ ],
1076
+ "stateMutability": "view",
1077
+ "type": "function"
1078
+ },
1079
+ {
1080
+ "inputs": [
1081
+ {
1082
+ "internalType": "bytes32",
1083
+ "name": "role",
1084
+ "type": "bytes32"
1085
+ },
1086
+ {
1087
+ "internalType": "uint256",
1088
+ "name": "index",
1089
+ "type": "uint256"
1090
+ }
1091
+ ],
1092
+ "name": "getRoleMember",
1093
+ "outputs": [
1094
+ {
1095
+ "internalType": "address",
1096
+ "name": "",
1097
+ "type": "address"
1098
+ }
1099
+ ],
1100
+ "stateMutability": "view",
1101
+ "type": "function"
1102
+ },
1103
+ {
1104
+ "inputs": [
1105
+ {
1106
+ "internalType": "bytes32",
1107
+ "name": "role",
1108
+ "type": "bytes32"
1109
+ }
1110
+ ],
1111
+ "name": "getRoleMemberCount",
1112
+ "outputs": [
1113
+ {
1114
+ "internalType": "uint256",
1115
+ "name": "",
1116
+ "type": "uint256"
1117
+ }
1118
+ ],
1119
+ "stateMutability": "view",
1120
+ "type": "function"
1121
+ },
1122
+ {
1123
+ "inputs": [
1124
+ {
1125
+ "internalType": "bytes32",
1126
+ "name": "role",
1127
+ "type": "bytes32"
1128
+ }
1129
+ ],
1130
+ "name": "getRoleMembers",
1131
+ "outputs": [
1132
+ {
1133
+ "internalType": "address[]",
1134
+ "name": "",
1135
+ "type": "address[]"
1136
+ }
1137
+ ],
1138
+ "stateMutability": "view",
1139
+ "type": "function"
1140
+ },
1141
+ {
1142
+ "inputs": [
1143
+ {
1144
+ "internalType": "bytes32",
1145
+ "name": "role",
1146
+ "type": "bytes32"
1147
+ },
1148
+ {
1149
+ "internalType": "address",
1150
+ "name": "account",
1151
+ "type": "address"
1152
+ }
1153
+ ],
1154
+ "name": "grantRole",
1155
+ "outputs": [],
1156
+ "stateMutability": "nonpayable",
1157
+ "type": "function"
1158
+ },
1159
+ {
1160
+ "inputs": [
1161
+ {
1162
+ "internalType": "bytes32",
1163
+ "name": "role",
1164
+ "type": "bytes32"
1165
+ },
1166
+ {
1167
+ "internalType": "address",
1168
+ "name": "account",
1169
+ "type": "address"
1170
+ }
1171
+ ],
1172
+ "name": "hasRole",
1173
+ "outputs": [
1174
+ {
1175
+ "internalType": "bool",
1176
+ "name": "",
1177
+ "type": "bool"
1178
+ }
1179
+ ],
1180
+ "stateMutability": "view",
1181
+ "type": "function"
1182
+ },
1183
+ {
1184
+ "inputs": [],
1185
+ "name": "isMintable",
1186
+ "outputs": [
1187
+ {
1188
+ "internalType": "bool",
1189
+ "name": "",
1190
+ "type": "bool"
1191
+ }
1192
+ ],
1193
+ "stateMutability": "view",
1194
+ "type": "function"
1195
+ },
1196
+ {
1197
+ "inputs": [
1198
+ {
1199
+ "internalType": "address",
1200
+ "name": "operator",
1201
+ "type": "address"
1202
+ },
1203
+ {
1204
+ "internalType": "bytes32",
1205
+ "name": "tokenId",
1206
+ "type": "bytes32"
1207
+ }
1208
+ ],
1209
+ "name": "isOperatorFor",
1210
+ "outputs": [
1211
+ {
1212
+ "internalType": "bool",
1213
+ "name": "",
1214
+ "type": "bool"
1215
+ }
1216
+ ],
1217
+ "stateMutability": "view",
1218
+ "type": "function"
1219
+ },
1220
+ {
1221
+ "inputs": [],
1222
+ "name": "isRevokable",
1223
+ "outputs": [
1224
+ {
1225
+ "internalType": "bool",
1226
+ "name": "",
1227
+ "type": "bool"
1228
+ }
1229
+ ],
1230
+ "stateMutability": "view",
1231
+ "type": "function"
1232
+ },
1233
+ {
1234
+ "inputs": [],
1235
+ "name": "isTransferable",
1236
+ "outputs": [
1237
+ {
1238
+ "internalType": "bool",
1239
+ "name": "",
1240
+ "type": "bool"
1241
+ }
1242
+ ],
1243
+ "stateMutability": "view",
1244
+ "type": "function"
1245
+ },
1246
+ {
1247
+ "inputs": [],
1248
+ "name": "makeTransferable",
1249
+ "outputs": [],
1250
+ "stateMutability": "nonpayable",
1251
+ "type": "function"
1252
+ },
1253
+ {
1254
+ "inputs": [
1255
+ {
1256
+ "internalType": "address",
1257
+ "name": "to",
1258
+ "type": "address"
1259
+ },
1260
+ {
1261
+ "internalType": "bytes32",
1262
+ "name": "tokenId",
1263
+ "type": "bytes32"
1264
+ },
1265
+ {
1266
+ "internalType": "bool",
1267
+ "name": "force",
1268
+ "type": "bool"
1269
+ },
1270
+ {
1271
+ "internalType": "bytes",
1272
+ "name": "data",
1273
+ "type": "bytes"
1274
+ }
1275
+ ],
1276
+ "name": "mint",
1277
+ "outputs": [],
1278
+ "stateMutability": "nonpayable",
1279
+ "type": "function"
1280
+ },
1281
+ {
1282
+ "inputs": [],
1283
+ "name": "nonTransferabilityEnabled",
1284
+ "outputs": [
1285
+ {
1286
+ "internalType": "bool",
1287
+ "name": "",
1288
+ "type": "bool"
1289
+ }
1290
+ ],
1291
+ "stateMutability": "view",
1292
+ "type": "function"
1293
+ },
1294
+ {
1295
+ "inputs": [],
1296
+ "name": "owner",
1297
+ "outputs": [
1298
+ {
1299
+ "internalType": "address",
1300
+ "name": "",
1301
+ "type": "address"
1302
+ }
1303
+ ],
1304
+ "stateMutability": "view",
1305
+ "type": "function"
1306
+ },
1307
+ {
1308
+ "inputs": [],
1309
+ "name": "renounceOwnership",
1310
+ "outputs": [],
1311
+ "stateMutability": "nonpayable",
1312
+ "type": "function"
1313
+ },
1314
+ {
1315
+ "inputs": [
1316
+ {
1317
+ "internalType": "bytes32",
1318
+ "name": "role",
1319
+ "type": "bytes32"
1320
+ },
1321
+ {
1322
+ "internalType": "address",
1323
+ "name": "callerConfirmation",
1324
+ "type": "address"
1325
+ }
1326
+ ],
1327
+ "name": "renounceRole",
1328
+ "outputs": [],
1329
+ "stateMutability": "nonpayable",
1330
+ "type": "function"
1331
+ },
1332
+ {
1333
+ "inputs": [
1334
+ {
1335
+ "internalType": "address",
1336
+ "name": "from",
1337
+ "type": "address"
1338
+ },
1339
+ {
1340
+ "internalType": "address",
1341
+ "name": "to",
1342
+ "type": "address"
1343
+ },
1344
+ {
1345
+ "internalType": "bytes32",
1346
+ "name": "tokenId",
1347
+ "type": "bytes32"
1348
+ },
1349
+ {
1350
+ "internalType": "bytes",
1351
+ "name": "data",
1352
+ "type": "bytes"
1353
+ }
1354
+ ],
1355
+ "name": "revoke",
1356
+ "outputs": [],
1357
+ "stateMutability": "nonpayable",
1358
+ "type": "function"
1359
+ },
1360
+ {
1361
+ "inputs": [
1362
+ {
1363
+ "internalType": "address",
1364
+ "name": "operator",
1365
+ "type": "address"
1366
+ },
1367
+ {
1368
+ "internalType": "bytes32",
1369
+ "name": "tokenId",
1370
+ "type": "bytes32"
1371
+ },
1372
+ {
1373
+ "internalType": "bool",
1374
+ "name": "notify",
1375
+ "type": "bool"
1376
+ },
1377
+ {
1378
+ "internalType": "bytes",
1379
+ "name": "operatorNotificationData",
1380
+ "type": "bytes"
1381
+ }
1382
+ ],
1383
+ "name": "revokeOperator",
1384
+ "outputs": [],
1385
+ "stateMutability": "nonpayable",
1386
+ "type": "function"
1387
+ },
1388
+ {
1389
+ "inputs": [
1390
+ {
1391
+ "internalType": "bytes32",
1392
+ "name": "role",
1393
+ "type": "bytes32"
1394
+ },
1395
+ {
1396
+ "internalType": "address",
1397
+ "name": "account",
1398
+ "type": "address"
1399
+ }
1400
+ ],
1401
+ "name": "revokeRole",
1402
+ "outputs": [],
1403
+ "stateMutability": "nonpayable",
1404
+ "type": "function"
1405
+ },
1406
+ {
1407
+ "inputs": [
1408
+ {
1409
+ "internalType": "address",
1410
+ "name": "account",
1411
+ "type": "address"
1412
+ }
1413
+ ],
1414
+ "name": "rolesOf",
1415
+ "outputs": [
1416
+ {
1417
+ "internalType": "bytes32[]",
1418
+ "name": "",
1419
+ "type": "bytes32[]"
1420
+ }
1421
+ ],
1422
+ "stateMutability": "view",
1423
+ "type": "function"
1424
+ },
1425
+ {
1426
+ "inputs": [
1427
+ {
1428
+ "internalType": "bytes32",
1429
+ "name": "dataKey",
1430
+ "type": "bytes32"
1431
+ },
1432
+ {
1433
+ "internalType": "bytes",
1434
+ "name": "dataValue",
1435
+ "type": "bytes"
1436
+ }
1437
+ ],
1438
+ "name": "setData",
1439
+ "outputs": [],
1440
+ "stateMutability": "payable",
1441
+ "type": "function"
1442
+ },
1443
+ {
1444
+ "inputs": [
1445
+ {
1446
+ "internalType": "bytes32[]",
1447
+ "name": "dataKeys",
1448
+ "type": "bytes32[]"
1449
+ },
1450
+ {
1451
+ "internalType": "bytes[]",
1452
+ "name": "dataValues",
1453
+ "type": "bytes[]"
1454
+ }
1455
+ ],
1456
+ "name": "setDataBatch",
1457
+ "outputs": [],
1458
+ "stateMutability": "payable",
1459
+ "type": "function"
1460
+ },
1461
+ {
1462
+ "inputs": [
1463
+ {
1464
+ "internalType": "bytes32[]",
1465
+ "name": "tokenIds",
1466
+ "type": "bytes32[]"
1467
+ },
1468
+ {
1469
+ "internalType": "bytes32[]",
1470
+ "name": "dataKeys",
1471
+ "type": "bytes32[]"
1472
+ },
1473
+ {
1474
+ "internalType": "bytes[]",
1475
+ "name": "dataValues",
1476
+ "type": "bytes[]"
1477
+ }
1478
+ ],
1479
+ "name": "setDataBatchForTokenIds",
1480
+ "outputs": [],
1481
+ "stateMutability": "nonpayable",
1482
+ "type": "function"
1483
+ },
1484
+ {
1485
+ "inputs": [
1486
+ {
1487
+ "internalType": "bytes32",
1488
+ "name": "tokenId",
1489
+ "type": "bytes32"
1490
+ },
1491
+ {
1492
+ "internalType": "bytes32",
1493
+ "name": "dataKey",
1494
+ "type": "bytes32"
1495
+ },
1496
+ {
1497
+ "internalType": "bytes",
1498
+ "name": "dataValue",
1499
+ "type": "bytes"
1500
+ }
1501
+ ],
1502
+ "name": "setDataForTokenId",
1503
+ "outputs": [],
1504
+ "stateMutability": "nonpayable",
1505
+ "type": "function"
1506
+ },
1507
+ {
1508
+ "inputs": [
1509
+ {
1510
+ "internalType": "bytes32",
1511
+ "name": "role",
1512
+ "type": "bytes32"
1513
+ },
1514
+ {
1515
+ "internalType": "bytes32",
1516
+ "name": "adminRole",
1517
+ "type": "bytes32"
1518
+ }
1519
+ ],
1520
+ "name": "setRoleAdmin",
1521
+ "outputs": [],
1522
+ "stateMutability": "nonpayable",
1523
+ "type": "function"
1524
+ },
1525
+ {
1526
+ "inputs": [
1527
+ {
1528
+ "internalType": "bytes4",
1529
+ "name": "interfaceId",
1530
+ "type": "bytes4"
1531
+ }
1532
+ ],
1533
+ "name": "supportsInterface",
1534
+ "outputs": [
1535
+ {
1536
+ "internalType": "bool",
1537
+ "name": "",
1538
+ "type": "bool"
1539
+ }
1540
+ ],
1541
+ "stateMutability": "view",
1542
+ "type": "function"
1543
+ },
1544
+ {
1545
+ "inputs": [],
1546
+ "name": "tokenBalanceCap",
1547
+ "outputs": [
1548
+ {
1549
+ "internalType": "uint256",
1550
+ "name": "",
1551
+ "type": "uint256"
1552
+ }
1553
+ ],
1554
+ "stateMutability": "view",
1555
+ "type": "function"
1556
+ },
1557
+ {
1558
+ "inputs": [
1559
+ {
1560
+ "internalType": "address",
1561
+ "name": "tokenOwner",
1562
+ "type": "address"
1563
+ }
1564
+ ],
1565
+ "name": "tokenIdsOf",
1566
+ "outputs": [
1567
+ {
1568
+ "internalType": "bytes32[]",
1569
+ "name": "",
1570
+ "type": "bytes32[]"
1571
+ }
1572
+ ],
1573
+ "stateMutability": "view",
1574
+ "type": "function"
1575
+ },
1576
+ {
1577
+ "inputs": [
1578
+ {
1579
+ "internalType": "bytes32",
1580
+ "name": "tokenId",
1581
+ "type": "bytes32"
1582
+ }
1583
+ ],
1584
+ "name": "tokenOwnerOf",
1585
+ "outputs": [
1586
+ {
1587
+ "internalType": "address",
1588
+ "name": "",
1589
+ "type": "address"
1590
+ }
1591
+ ],
1592
+ "stateMutability": "view",
1593
+ "type": "function"
1594
+ },
1595
+ {
1596
+ "inputs": [],
1597
+ "name": "tokenSupplyCap",
1598
+ "outputs": [
1599
+ {
1600
+ "internalType": "uint256",
1601
+ "name": "",
1602
+ "type": "uint256"
1603
+ }
1604
+ ],
1605
+ "stateMutability": "view",
1606
+ "type": "function"
1607
+ },
1608
+ {
1609
+ "inputs": [],
1610
+ "name": "totalSupply",
1611
+ "outputs": [
1612
+ {
1613
+ "internalType": "uint256",
1614
+ "name": "",
1615
+ "type": "uint256"
1616
+ }
1617
+ ],
1618
+ "stateMutability": "view",
1619
+ "type": "function"
1620
+ },
1621
+ {
1622
+ "inputs": [
1623
+ {
1624
+ "internalType": "address",
1625
+ "name": "from",
1626
+ "type": "address"
1627
+ },
1628
+ {
1629
+ "internalType": "address",
1630
+ "name": "to",
1631
+ "type": "address"
1632
+ },
1633
+ {
1634
+ "internalType": "bytes32",
1635
+ "name": "tokenId",
1636
+ "type": "bytes32"
1637
+ },
1638
+ {
1639
+ "internalType": "bool",
1640
+ "name": "force",
1641
+ "type": "bool"
1642
+ },
1643
+ {
1644
+ "internalType": "bytes",
1645
+ "name": "data",
1646
+ "type": "bytes"
1647
+ }
1648
+ ],
1649
+ "name": "transfer",
1650
+ "outputs": [],
1651
+ "stateMutability": "nonpayable",
1652
+ "type": "function"
1653
+ },
1654
+ {
1655
+ "inputs": [
1656
+ {
1657
+ "internalType": "address[]",
1658
+ "name": "from",
1659
+ "type": "address[]"
1660
+ },
1661
+ {
1662
+ "internalType": "address[]",
1663
+ "name": "to",
1664
+ "type": "address[]"
1665
+ },
1666
+ {
1667
+ "internalType": "bytes32[]",
1668
+ "name": "tokenId",
1669
+ "type": "bytes32[]"
1670
+ },
1671
+ {
1672
+ "internalType": "bool[]",
1673
+ "name": "force",
1674
+ "type": "bool[]"
1675
+ },
1676
+ {
1677
+ "internalType": "bytes[]",
1678
+ "name": "data",
1679
+ "type": "bytes[]"
1680
+ }
1681
+ ],
1682
+ "name": "transferBatch",
1683
+ "outputs": [],
1684
+ "stateMutability": "nonpayable",
1685
+ "type": "function"
1686
+ },
1687
+ {
1688
+ "inputs": [],
1689
+ "name": "transferLockEnd",
1690
+ "outputs": [
1691
+ {
1692
+ "internalType": "uint256",
1693
+ "name": "",
1694
+ "type": "uint256"
1695
+ }
1696
+ ],
1697
+ "stateMutability": "view",
1698
+ "type": "function"
1699
+ },
1700
+ {
1701
+ "inputs": [],
1702
+ "name": "transferLockStart",
1703
+ "outputs": [
1704
+ {
1705
+ "internalType": "uint256",
1706
+ "name": "",
1707
+ "type": "uint256"
1708
+ }
1709
+ ],
1710
+ "stateMutability": "view",
1711
+ "type": "function"
1712
+ },
1713
+ {
1714
+ "inputs": [
1715
+ {
1716
+ "internalType": "address",
1717
+ "name": "newOwner",
1718
+ "type": "address"
1719
+ }
1720
+ ],
1721
+ "name": "transferOwnership",
1722
+ "outputs": [],
1723
+ "stateMutability": "nonpayable",
1724
+ "type": "function"
1725
+ },
1726
+ {
1727
+ "inputs": [
1728
+ {
1729
+ "internalType": "uint256",
1730
+ "name": "newTransferLockStart",
1731
+ "type": "uint256"
1732
+ },
1733
+ {
1734
+ "internalType": "uint256",
1735
+ "name": "newTransferLockEnd",
1736
+ "type": "uint256"
1737
+ }
1738
+ ],
1739
+ "name": "updateTransferLockPeriod",
1740
+ "outputs": [],
1741
+ "stateMutability": "nonpayable",
1742
+ "type": "function"
1743
+ },
1744
+ {
1745
+ "stateMutability": "payable",
1746
+ "type": "receive"
1747
+ }
1748
+ ],
1749
+ "bytecode": "0x60c060405234801561000f575f5ffd5b5060405161633d38038061633d83398101604081905261002e916112ce565b8051825160208085015186519187015188519192918e8e8e8e8e84848484816100563361035f565b6001600160a01b03811661007d576040516306b620db60e21b815260040160405180910390fd5b6100868161036b565b506040805180820190915260048152632936598960e21b60208201526100cd907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906103ba565b6100f77fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856103ba565b6101217f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846103ba565b6040805160208101839052610168917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526103ba565b505060408051602081018590526101b393507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f1981840301815291905261040e565b506101d593505f92506101d09150505f546001600160a01b031690565b6104ce565b6009805460ff19168215159081179091556040517f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4905f90a28015610236576102365f51602061631d5f395f51905f526101d05f546001600160a01b031690565b5060805260a08190528015610267576102675f5160206162fd5f395f51905f526101d05f546001600160a01b031690565b508015806102755750818110155b61029257604051634f19c9bf60e11b815260040160405180910390fd5b600a829055600b819055600c805460ff19166001908117909155604051829184917f425e44dd36676a155d17433393a65b24c8fbb83d07ee2fa66bb951209797ff86905f90a46102fa5f5160206162dd5f395f51905f526101d05f546001600160a01b031690565b5050600c8054821580156101000261ff00199092169190911790915561033c5761033c5f5160206162bd5f395f51905f526101d05f546001600160a01b031690565b5061035187856020015161054c60201b60201c565b505050505050505050611677565b610368816105da565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8281526001602052604090206103d18282611431565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516104029190611519565b60405180910390a25050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820161044e576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161048e57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016103ba57604051634ef6d7fb60e01b815260040160405180910390fd5b5f8281526007602052604081206104e5908361067b565b90508015610547576001600160a01b0382165f90815260086020526040902061050e9084610698565b5060405133906001600160a01b0384169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a45b505050565b5f61055660805190565b90508015801590610586578251821080156105845760405163e8ba229160e01b815260040160405180910390fd5b505b5f5b83518110156105d3576105cb858583815181106105a7576105a761152b565b6020026020010151600160405180602001604052805f8152506106a360201b60201c565b600101610588565b5050505050565b6105f15f5160206162bd5f395f51905f525f610829565b6105fa8161088e565b5f6106115f5160206162bd5f395f51905f526108ae565b90505f5b8151811015610547575f8282815181106106315761063161152b565b60200260200101519050836001600160a01b0316816001600160a01b03160361065a5750610673565b6106715f5160206162bd5f395f51905f52826108c7565b505b600101610615565b5f61068f836001600160a01b038416610944565b90505b92915050565b5f61068f8383610944565b6001600160a01b0384166106ca576040516324ecef4d60e01b815260040160405180910390fd5b5f8381526003602052604090205483906001600160a01b03161561070d576040516334c7b51160e01b815260040161070491815260200190565b60405180910390fd5b5061071b5f85858585610990565b5f8381526003602052604090205483906001600160a01b031615610755576040516334c7b51160e01b815260040161070491815260200190565b5060025f815461076490611553565b909155506001600160a01b0384165f9081526004602052604090206107899084610698565b505f8381526003602052604080822080546001600160a01b0319166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906107ea9033908890889061156b565b60405180910390a45f335f86868560405160200161080c95949392919061159f565b60408051601f1981840301815291905290506105d385848361099d565b816108475760405163d0dc904b60e01b815260040160405180910390fd5b5f82815260066020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108a55f5160206162dd5f395f51905f525f610829565b61036881610aa6565b5f81815260076020526040902060609061069290610ac6565b5f8281526007602052604081206108de9083610ad9565b90508015610547576001600160a01b0382165f9081526008602052604090206109079084610aed565b5060405133906001600160a01b0384169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f81815260018301602052604081205461098957508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610692565b505f610692565b6105d38585858585610af8565b6109ae83631aed5a8560e21b610b12565b15610a4957604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490610a01907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d9085906004016115d9565b5f604051808303815f875af1158015610a1c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a4391908101906115f9565b50505050565b81610547576001600160a01b0383163b15610a8257604051634349776d60e01b81526001600160a01b0384166004820152602401610704565b604051630317313760e01b81526001600160a01b0384166004820152602401610704565b610abd5f5160206162fd5f395f51905f525f610829565b61036881610b98565b60605f610ad283610bb8565b9392505050565b5f61068f836001600160a01b038416610c11565b5f61068f8383610c11565b610b058585858585610cf4565b6105d38585858585610d0e565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b17815282515f9392849283928392918391908a617530fa92503d91505f519050828015610b82575060208210155b8015610b8d57505f81115b979650505050505050565b610baf5f51602061631d5f395f51905f525f610829565b61036881610d2f565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610c0557602002820191905f5260205f20905b815481526020019060010190808311610bf1575b50505050509050919050565b5f8181526001830160205260408120548015610ceb575f610c3360018361163d565b85549091505f90610c469060019061163d565b9050818114610ca5575f865f018281548110610c6457610c6461152b565b905f5260205f200154905080875f018481548110610c8457610c8461152b565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610cb657610cb6611650565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610692565b5f915050610692565b610cfd84610dbf565b6105d3576105d38585858585610e3f565b610d1b8585858585610ea0565b6105d385858585856001600160e01b038616565b5f546001600160a01b0316610d438261036b565b6001600160a01b0381165f908152600860205260408120610d6390610ac6565b90505f5b8151811015610a43575f828281518110610d8357610d8361152b565b60200260200101519050610d9d81856108c760201b60201c565b6001600160a01b03851615610db657610db681866104ce565b50600101610d67565b5f80356001600160e01b0319166384bfc8eb60e01b148015610ded5750610ded600c54610100900460ff1690565b8015610e0b5750610e0b5f5160206162bd5f395f51905f5233610eba565b801561069257505f546001600160a01b038381169116148061069257506106925f5160206162bd5f395f51905f5283610eba565b6001600160a01b0385161580610e5c57506001600160a01b038416155b6105d357610e775f5160206162dd5f395f51905f5286610eba565b6105d357610e83610ec5565b6105d357604051634d6f20a160e11b815260040160405180910390fd5b610ea984610dbf565b6105d3576105d38585858585610f4c565b5f61068f838361102b565b600c545f9060ff16610ed75750600190565b600a54600b54901580159115159082610eee575080155b15610efc5760019250505090565b81158015610f075750805b15610f185742600b54109250505090565b818015610f23575080155b15610f345742600a54119250505090565b42600a541180610f45575042600b54105b9250505090565b836001600160a01b0316856001600160a01b031603156105d3576001600160a01b0384161580610f8657506001600160a01b03841661dead145b6105d357610fa15f5160206162fd5f395f51905f5285610eba565b6105d3575f610faf60a05190565b905080151580610fc05750506105d3565b60a051610fcc87611042565b610fd7906001611664565b111586610fe381611042565b60a05190919261101f576040516339afc44b60e21b81526001600160a01b03909316600484015260248301919091526044820152606401610704565b50505050505050505050565b5f82815260076020526040812061068f9083611066565b6001600160a01b0381165f908152600460205260408120610692905f610692825490565b6001600160a01b0381165f908152600183016020526040812054151561068f565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156110bd576110bd611087565b60405290565b604051601f8201601f191681016001600160401b03811182821017156110eb576110eb611087565b604052919050565b5f806001600160401b0384111561110c5761110c611087565b50601f8301601f1916602001611121816110c3565b915050828152838383011115611135575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f83011261115a575f5ffd5b61068f838351602085016110f3565b80516001600160a01b038116811461117f575f5ffd5b919050565b8051801515811461117f575f5ffd5b5f604082840312156111a3575f5ffd5b6111ab61109b565b90506111b682611184565b815260208201516001600160401b038111156111d0575f5ffd5b8201601f810184136111e0575f5ffd5b80516001600160401b038111156111f9576111f9611087565b8060051b611209602082016110c3565b91825260208184018101929081019087841115611224575f5ffd5b6020850194505b8385101561124657845182526020948501949091019061122b565b6020860152509295945050505050565b5f60408284031215611266575f5ffd5b61126e61109b565b825181526020928301519281019290925250919050565b5f60208284031215611295575f5ffd5b604051602081016001600160401b03811182821017156112b7576112b7611087565b6040529050806112c683611184565b905292915050565b5f5f5f5f5f5f5f5f5f6101608a8c0312156112e7575f5ffd5b89516001600160401b038111156112fc575f5ffd5b6113088c828d0161114b565b60208c0151909a5090506001600160401b03811115611325575f5ffd5b6113318c828d0161114b565b98505061134060408b01611169565b60608b015160808c015160a08d015192995090975095506001600160401b0381111561136a575f5ffd5b6113768c828d01611193565b9450506113868b60c08c01611256565b92506113968b6101008c01611256565b91506113a68b6101408c01611285565b90509295985092959850929598565b600181811c908216806113c957607f821691505b6020821081036113e757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561054757805f5260205f20601f840160051c810160208510156114125750805b601f840160051c820191505b818110156105d3575f815560010161141e565b81516001600160401b0381111561144a5761144a611087565b61145e8161145884546113b5565b846113ed565b6020601f821160018114611490575f83156114795750848201515b5f19600385901b1c1916600184901b1784556105d3565b5f84815260208120601f198516915b828110156114bf578785015182556020948501946001909201910161149f565b50848210156114dc57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61068f60208301846114eb565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016115645761156461153f565b5060010190565b6001600160a01b038416815282151560208201526060604082018190525f90611596908301846114eb565b95945050505050565b6001600160a01b0386811682528581166020830152841660408201526060810183905260a0608082018190525f90610b8d908301846114eb565b828152604060208201525f6115f160408301846114eb565b949350505050565b5f60208284031215611609575f5ffd5b81516001600160401b0381111561161e575f5ffd5b8201601f8101841361162e575f5ffd5b6115f1848251602084016110f3565b818103818111156106925761069261153f565b634e487b7160e01b5f52603160045260245ffd5b808201808211156106925761069261153f565b60805160a051614c106116ad5f395f81816109e001528181613a2e01528181613a5e0152613a9f01525f6110dc0152614c105ff3fe60806040526004361061034d575f3560e01c80637e5cd5c1116101ba578063a3246ad3116100f6578063d539139311610094578063db8c96631161006e578063db8c966314610a75578063dedff9c614610a94578063e6fc609814610ab3578063f2fde38b14610ac8576103d8565b8063d539139314610a04578063d547741f14610a37578063d6c1407c14610a56576103d8565b8063be9f0e6f116100d0578063be9f0e6f14610980578063c282ca781461099f578063ca15c873146109b3578063d1ca0188146109d2576103d8565b8063a3246ad314610923578063a3b261f214610942578063af255b6114610961576103d8565b80638fb0573011610163578063941877531161013d57806394187753146108ae57806397902421146108e15780639e045773146108f4578063a217fddf14610910576103d8565b80638fb057301461085b5780639010d07c1461087057806391d148541461088f576103d8565b806384bfc8eb1161019457806384bfc8eb1461080157806386a10ddd146108205780638da5cb5b1461083f576103d8565b80637e5cd5c1146107bb5780637e87632c146107cf5780637f23690c146107ee576103d8565b806336568abe1161028957806354f6127f116102325780636c79b70b1161020c5780636c79b70b1461073657806370a0823114610755578063715018a6146107745780637c4acabf14610788576103d8565b806354f6127f146106e45780636963d43814610703578063696fd68c14610722576103d8565b806349a6078d1161026357806349a6078d14610685578063511b6952146106b157806352058d8a146106d0576103d8565b806336568abe1461062e57806345e14c461461064d57806346b45af71461066c576103d8565b80632121dc75116102f65780632a3654a4116102d05780632a3654a4146105ab5780632de94807146105ca5780632f2ff15d146105f657806334ac682314610615576103d8565b80632121dc7514610535578063217b227014610549578063248a9ca314610580576103d8565b806318160ddd1161032757806318160ddd146104d45780631d26fce6146104e85780631e4e009114610514576103d8565b806301ffc9a71461043357806312318ac41461046757806316e023b3146104a8576103d8565b366103d857345f036103a6576040517fe5099ee300000000000000000000000000000000000000000000000000000000815260040161039d9060208082526004908201525f604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3660608282600481101561041b576040517fe5099ee300000000000000000000000000000000000000000000000000000000815260040161039d929190613c0d565b50506104278383610ae7565b80519350602001915050f35b34801561043e575f5ffd5b5061045261044d366004613c59565b610c62565b60405190151581526020015b60405180910390f35b348015610472575f5ffd5b5061049a7fb4b3a36d7c2b72add3151898671aaed843238e580f7d6d4bc5077ce2023b065981565b60405190815260200161045e565b3480156104b3575f5ffd5b506104c76104c2366004613c98565b610c6c565b60405161045e9190613d04565b3480156104df575f5ffd5b5060025461049a565b3480156104f3575f5ffd5b50610507610502366004613e1f565b610c7f565b60405161045e9190613e84565b34801561051f575f5ffd5b5061053361052e366004613c98565b610d7f565b005b348015610540575f5ffd5b50610452610d98565b348015610554575f5ffd5b50610568610563366004613f05565b610e1f565b6040516001600160a01b03909116815260200161045e565b34801561058b575f5ffd5b5061049a61059a366004613f05565b5f9081526006602052604090205490565b3480156105b6575f5ffd5b506104526105c5366004613f37565b610e71565b3480156105d5575f5ffd5b506105e96105e4366004613f5f565b610e7c565b60405161045e9190613f78565b348015610601575f5ffd5b50610533610610366004613fba565b610e9f565b348015610620575f5ffd5b50600c546104529060ff1681565b348015610639575f5ffd5b50610533610648366004613fba565b610ec0565b348015610658575f5ffd5b50610533610667366004613c98565b610f75565b348015610677575f5ffd5b506009546104529060ff1681565b348015610690575f5ffd5b506106a461069f366004613f05565b611039565b60405161045e9190613fe4565b3480156106bc575f5ffd5b506105336106cb3660046140c5565b61105a565b3480156106db575f5ffd5b5061049a6110c6565b3480156106ef575f5ffd5b506104c76106fe366004613f05565b6110fe565b34801561070e575f5ffd5b5061050761071d366004614139565b611109565b34801561072d575f5ffd5b5061053361124d565b348015610741575f5ffd5b506105336107503660046141aa565b6112f2565b348015610760575f5ffd5b5061049a61076f366004613f5f565b611354565b34801561077f575f5ffd5b50610533611374565b348015610793575f5ffd5b5061049a7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3081565b3480156107c6575f5ffd5b50610533611387565b3480156107da575f5ffd5b506105336107e9366004614327565b61141f565b6105336107fc3660046141aa565b611524565b34801561080c575f5ffd5b5061053361081b3660046143fd565b61156e565b34801561082b575f5ffd5b5061053361083a366004614461565b6116eb565b34801561084a575f5ffd5b505f546001600160a01b0316610568565b348015610866575f5ffd5b5061049a600b5481565b34801561087b575f5ffd5b5061056861088a366004613c98565b6118d3565b34801561089a575f5ffd5b506104526108a9366004613fba565b6118ea565b3480156108b9575f5ffd5b5061049a7f975773d1e0a917a74b57f36a377f439ffff6271648aebdbff75a52ab58eb7bad81565b6105336108ef3660046144b4565b6118f5565b3480156108ff575f5ffd5b50600c54610100900460ff16610452565b34801561091b575f5ffd5b5061049a5f81565b34801561092e575f5ffd5b506106a461093d366004613f05565b61193f565b34801561094d575f5ffd5b506105e961095c366004613f5f565b611958565b34801561096c575f5ffd5b5061053361097b36600461450f565b61197b565b34801561098b575f5ffd5b5061053361099a36600461455b565b6119b1565b3480156109aa575f5ffd5b50610533611aaa565b3480156109be575f5ffd5b5061049a6109cd366004613f05565b611b47565b3480156109dd575f5ffd5b507f000000000000000000000000000000000000000000000000000000000000000061049a565b348015610a0f575f5ffd5b5061049a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b348015610a42575f5ffd5b50610533610a51366004613fba565b611b5d565b348015610a61575f5ffd5b50610533610a703660046145df565b611be6565b348015610a80575f5ffd5b50610533610a8f36600461450f565b611bf9565b348015610a9f575f5ffd5b50610507610aae366004614615565b611d2e565b348015610abe575f5ffd5b5061049a600a5481565b348015610ad3575f5ffd5b50610533610ae2366004613f5f565b611dd8565b60605f610b165f357fffffffff0000000000000000000000000000000000000000000000000000000016611e82565b5090507fffffffff000000000000000000000000000000000000000000000000000000005f35166001600160a01b038216610ba2576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000909116600482015260240161039d565b505f5f826001600160a01b03163487873334604051602001610bc79493929190614647565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bff9161468a565b5f6040518083038185875af1925050503d805f8114610c39576040519150601f19603f3d011682016040523d82523d5f602084013e610c3e565b606091505b50915091508115610c53579250610c5c915050565b80518060208301fd5b92915050565b5f610c5c82611f40565b6060610c788383611f59565b9392505050565b60608151835114610cbc576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825167ffffffffffffffff811115610cd657610cd6613d16565b604051908082528060200260200182016040528015610d0957816020015b6060815260200190600190039081610cf45790505b5090505f5b8351811015610d7857610d53848281518110610d2c57610d2c6146a0565b6020026020010151848381518110610d4657610d466146a0565b6020026020010151611f59565b828281518110610d6557610d656146a0565b6020908102919091010152600101610d0e565b5092915050565b5f610d898161202c565b610d938383612036565b505050565b600c545f9060ff16610daa5750600190565b600a54600b54901580159115159082610dc1575080155b15610dcf5760019250505090565b81158015610dda5750805b15610deb5742600b54109250505090565b818015610df6575080155b15610e075742600a54119250505090565b42600a541180610e18575042600b54105b9250505090565b5f818152600360205260408120546001600160a01b03168281610d78576040517fae8f9a3600000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b5f610c7883836120b4565b6001600160a01b0381165f908152600860205260409020606090610c5c906120ef565b5f82815260066020526040902054610eb68161202c565b610d9383836120fb565b6001600160a01b0381163314610f02576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81158015610f1957505f546001600160a01b031633145b1533839091610f65576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b5050610f718233612178565b5050565b610f7d6121f5565b600c5460ff16610fb9576040517f18d504ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580610fc65750818110155b610ffc576040517f9e33937e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a829055600b819055604051819083906001907f425e44dd36676a155d17433393a65b24c8fbb83d07ee2fa66bb951209797ff86905f90a45050565b606061104482612268565b5f828152600560205260409020610c5c906120ef565b61106433846120b4565b833390916110b0576040517f1294d2a900000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b0316602482015260440161039d565b50506110bf85858585856122bc565b5050505050565b6009545f9060ff166110d9575060025490565b507f000000000000000000000000000000000000000000000000000000000000000090565b6060610c5c8261250a565b60608167ffffffffffffffff81111561112457611124613d16565b60405190808252806020026020018201604052801561115757816020015b60608152602001906001900390816111425790505b5090505f5b82811015610d78575f8030868685818110611179576111796146a0565b905060200281019061118b91906146cd565b604051611199929190614735565b5f60405180830381855af49150503d805f81146111d1576040519150601f19603f3d011682016040523d82523d5f602084013e6111d6565b606091505b509150915081611225578051156111f05780518082602001fd5b6040517f234eb8190000000000000000000000000000000000000000000000000000000081526004810184905260240161039d565b80848481518110611238576112386146a0565b6020908102919091010152505060010161115c565b6112556121f5565b600c5460ff16611291576040517fe8587b0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555f600a819055600b819055604051819081907f425e44dd36676a155d17433393a65b24c8fbb83d07ee2fa66bb951209797ff86908290a4565b6112fc33836120b4565b82339091611348576040517f1294d2a900000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b0316602482015260440161039d565b5050610f7182826125a9565b6001600160a01b0381165f908152600460205260408120610c5c906126bc565b61137c6121f5565b6113855f6126c5565b565b61138f6121f5565b60095460ff166113cb576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040515f907f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4908290a2565b84518451811480156114315750835181145b801561143d5750825181145b80156114495750815181145b61147f576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8181101561151b5761151387828151811061149e5761149e6146a0565b60200260200101518783815181106114b8576114b86146a0565b60200260200101518784815181106114d2576114d26146a0565b60200260200101518785815181106114ec576114ec6146a0565b6020026020010151878681518110611506576115066146a0565b602002602001015161105a565b600101611481565b50505050505050565b61152c6121f5565b3415611564576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7182826126ce565b7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee306115988161202c565b600c54610100900460ff166115d9576040517f973495bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546001600160a01b038581169116148061161957506116197fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee30856118ea565b84907fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3090611684576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b5050836001600160a01b0316856001600160a01b0316336001600160a01b03167fa0e44189cd74cca42b38714145390a2883cea7e03e260877ac743db0b43eb7df86866040516116d5929190614744565b60405180910390a46110bf8585856001866122bc565b5f6116f583610e1f565b90508083336001600160a01b0383168114611758576040517f5b271ea20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201526024810192909252909116604482015260640161039d565b5050506001600160a01b03841661179b576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b0316846001600160a01b0316036117e6576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8381526005602052604081206117fd9086612731565b9050848482611849576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b505083826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712158660405161188f9190613d04565b60405180910390a45f33856001866040516020016118b0949392919061475c565b60405160208183030381529060405290506118cb8682612745565b505050505050565b5f828152600760205260408120610c789083612770565b5f610c78838361277b565b6118fd6121f5565b3415611935576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f718282612792565b5f818152600760205260409020606090610c5c906120ef565b6001600160a01b0381165f908152600460205260409020606090610c5c906120ef565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66119a58161202c565b6110bf85858585612856565b6119b96121f5565b815183511480156119cb575080518251145b611a01576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f03611a3b576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8351811015611aa457611a9c848281518110611a5b57611a5b6146a0565b6020026020010151848381518110611a7557611a756146a0565b6020026020010151848481518110611a8f57611a8f6146a0565b602002602001015161289e565b600101611a3d565b50505050565b611ab26121f5565b600c54610100900460ff16611af3576040517f973495bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690556040515f907f67e25b3c9018f015458c04997debf5769d7c1727a0918c43acfe4daf80ac7017908290a2565b5f818152600760205260408120610c5c906126bc565b5f82815260066020526040902054611b748161202c565b82158015611b8e57505f546001600160a01b038381169116145b1582849091611bda576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b5050610d938383612178565b611bee6121f5565b610d9383838361289e565b5f611c0384610e1f565b9050336001600160a01b03821614611c78573381856001600160a01b0388168314611c74576040517f760b5acd0000000000000000000000000000000000000000000000000000000081526001600160a01b039384166004820152929091166024830152604482015260640161039d565b5050505b6001600160a01b038516611cb8576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b0316856001600160a01b031603611d03576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d10858286868661292c565b82156110bf575f81855f856040516020016118b0949392919061475c565b6060815167ffffffffffffffff811115611d4a57611d4a613d16565b604051908082528060200260200182016040528015611d7d57816020015b6060815260200190600190039081611d685790505b5090505f5b8251811015611dd257611dad838281518110611da057611da06146a0565b602002602001015161250a565b828281518110611dbf57611dbf6146a0565b6020908102919091010152600101611d82565b50919050565b611de06121f5565b6001600160a01b038116611e76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161039d565b611e7f816126c5565b50565b5f8080611ed17fcee78b4094da86011096000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000086166129e7565b90505f611edd8261250a565b9050805160141480611eee57508051155b8190611f27576040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161039d9190613d04565b50611f3181614795565b60601c95600195509350505050565b5f611f4a82612a6a565b80610c5c5750610c5c82612b4d565b606060015f8484604051602001611f7a929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f208054611fa890614801565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd490614801565b801561201f5780601f10611ff65761010080835404028352916020019161201f565b820191905f5260205f20905b81548152906001019060200180831161200257829003601f168201915b5050505050905092915050565b611e7f8133612bb1565b8161206d576040517fd0dc904b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260066020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f6120be82610e1f565b6001600160a01b0316836001600160a01b03161480610c7857505f828152600560205260409020610c789084612c06565b60605f610c7883612c27565b5f8281526007602052604081206121129083612731565b90508015610d93576001600160a01b0382165f90815260086020526040902061213b9084612c7f565b5060405133906001600160a01b0384169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a4505050565b5f82815260076020526040812061218f9083612c8a565b90508015610d93576001600160a01b0382165f9081526008602052604090206121b89084612c9e565b5060405133906001600160a01b0384169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f546001600160a01b03163314611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039d565b5f818152600360205260409020546001600160a01b031615158190610f71576040517fae8f9a3600000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b5f6122c684610e1f565b90508084876001600160a01b038181169084161461232c576040517f5b271ea20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201526024810192909252909116604482015260640161039d565b5050506001600160a01b03851661236f576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237c8686868686612ca9565b5f61238685610e1f565b90508482826001600160a01b03808216908316146123ea576040517f5a9c31d300000000000000000000000000000000000000000000000000000000815260048101939093526001600160a01b03918216602484015216604482015260640161039d565b5050506123f78786612cb6565b6001600160a01b0387165f9081526004602052604090206124189086612c9e565b506001600160a01b0386165f90815260046020526040902061243a9086612c7f565b505f858152600360205260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906124b89033908a908a9061484c565b60405180910390a45f33888888876040516020016124da95949392919061487e565b60405160208183030381529060405290506124f58882612d09565b612500878683612d34565b5050505050505050565b5f81815260016020526040902080546060919061252690614801565b80601f016020809104026020016040519081016040528092919081815260200182805461255290614801565b801561259d5780601f106125745761010080835404028352916020019161259d565b820191905f5260205f20905b81548152906001019060200180831161258057829003601f168201915b50505050509050919050565b5f6125b383610e1f565b90506125c2815f855f86612ca9565b6125cb83610e1f565b905060025f81546125db906148f0565b909155506125e98184612cb6565b6001600160a01b0381165f90815260046020526040902061260a9084612c9e565b505f8381526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518491906001600160a01b038416907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061267f9033908590899061484c565b60405180910390a45f33825f86866040516020016126a195949392919061487e565b6040516020818303038152906040529050611aa48282612d09565b5f610c5c825490565b611e7f81612eb9565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201612727576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f718282612f93565b5f610c78836001600160a01b0384166130f2565b610f71827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f009708361313e565b5f610c7883836131bd565b5f828152600760205260408120610c789083612c06565b80518251146127cd576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81515f03612807576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610d935761284e838281518110612827576128276146a0565b6020026020010151838381518110612841576128416146a0565b60200260200101516126ce565b600101612809565b60095460ff16612892576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa4848484846131e3565b8060015f85856040516020016128be929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f2090816128ed9190614968565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161291f9190613d04565b60405180910390a3505050565b5f8381526005602052604081206129439087612c8a565b905085848261298f576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b505083856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c86866040516129d7929190614a7f565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201525f602a82018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008416602c83015291829101604051602081830303815290604052905080612a6290614a99565b949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480612afc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000145b80610c5c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f90832245000000000000000000000000000000000000000000000000000000001492915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3a271706000000000000000000000000000000000000000000000000000000001480612ba25750612ba2826131fb565b80610c5c5750610c5c82613250565b612bbb828261277b565b81839091611aa4576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b6001600160a01b0381165f9081526001830160205260408120541515610c78565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561259d57602002820191905f5260205f20905b815481526020019060010190808311612c605750505050509050919050565b5f610c7883836130f2565b5f610c78836001600160a01b03841661329e565b5f610c78838361329e565b6110bf8585858585613381565b5f81815260056020526040812090612ccd826126bc565b90505f5f5b828110156118cb57612ce4845f612770565b9150612d018287875f60405180602001604052805f81525061292c565b600101612cd2565b610f71827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab008361313e565b612d5e837f6bb56a140000000000000000000000000000000000000000000000000000000061339b565b15612e2a576040517f6bb56a140000000000000000000000000000000000000000000000000000000081526001600160a01b03841690636bb56a1490612dca907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401614744565b5f604051808303815f875af1158015612de5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611aa49190810190614adb565b81610d93576001600160a01b0383163b15612e7c576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161039d565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161039d565b612ee37fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee305f612036565b612eec81613467565b5f612f167fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3061193f565b90505f5b8151811015610d93575f828281518110612f3657612f366146a0565b60200260200101519050836001600160a01b0316816001600160a01b031603612f5f5750612f8b565b612f897fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3082612178565b505b600101612f1a565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612fec576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201613045576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d820161309e576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526001602052604090206130b58282614968565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516130e69190613d04565b60405180910390a25050565b5f81815260018301602052604081205461313757508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610c5c565b505f610c5c565b6131716001600160a01b0384167f6bb56a140000000000000000000000000000000000000000000000000000000061339b565b15610d93576040517f6bb56a140000000000000000000000000000000000000000000000000000000081526001600160a01b03841690636bb56a1490612dca9085908590600401614744565b5f825f0182815481106131d2576131d26146a0565b905f5260205f200154905092915050565b6131ef8484848461349a565b611aa4848484846134f8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa918fa6b000000000000000000000000000000000000000000000000000000001480610c5c5750610c5c82613540565b5f8061327b7f01ffc9a700000000000000000000000000000000000000000000000000000000611e82565b5090506001600160a01b03811661329457505f92915050565b610c78818461339b565b5f8181526001830160205260408120548015613378575f6132c0600183614b50565b85549091505f906132d390600190614b50565b9050818114613332575f865f0182815481106132f1576132f16146a0565b905f5260205f200154905080875f018481548110613311576133116146a0565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061334357613343614b63565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610c5c565b5f915050610c5c565b61338e85858585856135d6565b6110bf85858585856135f0565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282515f9392849283928392918391908a617530fa92503d91505f519050828015613451575060208210155b801561345c57505f81115b979650505050505050565b6134917fb4b3a36d7c2b72add3151898671aaed843238e580f7d6d4bc5077ce2023b06595f612036565b611e7f81613602565b6134a26110c6565b15806134c257506134b16110c6565b6002546134bf906001614b90565b11155b611aa4576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460ff16613534576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa484848484613635565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f629aa694000000000000000000000000000000000000000000000000000000001480610c5c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610c5c565b6135df84613814565b6110bf576110bf85858585856138e6565b6135fd8585858585613973565b6110bf565b61362c7f975773d1e0a917a74b57f36a377f439ffff6271648aebdbff75a52ab58eb7bad5f612036565b611e7f8161398d565b6001600160a01b038416613675576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8381526003602052604090205483906001600160a01b0316156136c8576040517f34c7b51100000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b506136d65f85858585612ca9565b5f8381526003602052604090205483906001600160a01b031615613729576040517f34c7b51100000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b5060025f815461373890614ba3565b909155506001600160a01b0384165f90815260046020526040902061375d9084612c7f565b505f8381526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906137d69033908890889061484c565b60405180910390a45f335f8686856040516020016137f895949392919061487e565b60405160208183030381529060405290506110bf858483612d34565b5f80357fffffffff00000000000000000000000000000000000000000000000000000000167f84bfc8eb0000000000000000000000000000000000000000000000000000000014801561386e5750600c54610100900460ff165b801561389f575061389f7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee30336118ea565b8015610c5c57505f546001600160a01b0383811691161480610c5c5750610c5c7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee30836118ea565b6001600160a01b038516158061390357506001600160a01b038416155b6110bf576139317fb4b3a36d7c2b72add3151898671aaed843238e580f7d6d4bc5077ce2023b0659866118ea565b6110bf5761393d610d98565b6110bf576040517f9ade414200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61397c84613814565b6110bf576110bf85858585856139c0565b6139b77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a65f612036565b611e7f81613b1c565b836001600160a01b0316856001600160a01b031603156110bf576001600160a01b03841615806139fa57506001600160a01b03841661dead145b6110bf57613a287f975773d1e0a917a74b57f36a377f439ffff6271648aebdbff75a52ab58eb7bad856118ea565b6110bf577f000000000000000000000000000000000000000000000000000000000000000080151580613a5c5750506110bf565b7f0000000000000000000000000000000000000000000000000000000000000000613a8687611354565b613a91906001614b90565b111586613a9d88611354565b7f0000000000000000000000000000000000000000000000000000000000000000909192613b10576040517fe6bf112c0000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830191909152604482015260640161039d565b50505050505050505050565b5f546001600160a01b0316613b3082613ba6565b6001600160a01b0381165f908152600860205260408120613b50906120ef565b90505f5b8151811015611aa4575f828281518110613b7057613b706146a0565b60200260200101519050613b848185612178565b6001600160a01b03851615613b9d57613b9d81866120fb565b50600101613b54565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60208152816020820152818360408301375f818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b5f60208284031215613c69575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c78575f5ffd5b5f5f60408385031215613ca9575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c786020830184613cb8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613d8a57613d8a613d16565b604052919050565b5f67ffffffffffffffff821115613dab57613dab613d16565b5060051b60200190565b5f82601f830112613dc4575f5ffd5b8135613dd7613dd282613d92565b613d43565b8082825260208201915060208360051b860101925085831115613df8575f5ffd5b602085015b83811015613e15578035835260209283019201613dfd565b5095945050505050565b5f5f60408385031215613e30575f5ffd5b823567ffffffffffffffff811115613e46575f5ffd5b613e5285828601613db5565b925050602083013567ffffffffffffffff811115613e6e575f5ffd5b613e7a85828601613db5565b9150509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613ef9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613ee4858351613cb8565b94506020938401939190910190600101613eaa565b50929695505050505050565b5f60208284031215613f15575f5ffd5b5035919050565b80356001600160a01b0381168114613f32575f5ffd5b919050565b5f5f60408385031215613f48575f5ffd5b613f5183613f1c565b946020939093013593505050565b5f60208284031215613f6f575f5ffd5b610c7882613f1c565b602080825282518282018190525f918401906040840190835b81811015613faf578351835260209384019390920191600101613f91565b509095945050505050565b5f5f60408385031215613fcb575f5ffd5b82359150613fdb60208401613f1c565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015613faf5783516001600160a01b0316835260209384019390920191600101613ffd565b80358015158114613f32575f5ffd5b5f67ffffffffffffffff82111561404c5761404c613d16565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112614087575f5ffd5b8135614095613dd282614033565b8181528460208386010111156140a9575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156140d9575f5ffd5b6140e286613f1c565b94506140f060208701613f1c565b93506040860135925061410560608701614024565b9150608086013567ffffffffffffffff811115614120575f5ffd5b61412c88828901614078565b9150509295509295909350565b5f5f6020838503121561414a575f5ffd5b823567ffffffffffffffff811115614160575f5ffd5b8301601f81018513614170575f5ffd5b803567ffffffffffffffff811115614186575f5ffd5b8560208260051b840101111561419a575f5ffd5b6020919091019590945092505050565b5f5f604083850312156141bb575f5ffd5b82359150602083013567ffffffffffffffff8111156141d8575f5ffd5b613e7a85828601614078565b5f82601f8301126141f3575f5ffd5b8135614201613dd282613d92565b8082825260208201915060208360051b860101925085831115614222575f5ffd5b602085015b83811015613e155761423881613f1c565b835260209283019201614227565b5f82601f830112614255575f5ffd5b8135614263613dd282613d92565b8082825260208201915060208360051b860101925085831115614284575f5ffd5b602085015b83811015613e155761429a81614024565b835260209283019201614289565b5f82601f8301126142b7575f5ffd5b81356142c5613dd282613d92565b8082825260208201915060208360051b8601019250858311156142e6575f5ffd5b602085015b83811015613e1557803567ffffffffffffffff811115614309575f5ffd5b614318886020838a0101614078565b845250602092830192016142eb565b5f5f5f5f5f60a0868803121561433b575f5ffd5b853567ffffffffffffffff811115614351575f5ffd5b61435d888289016141e4565b955050602086013567ffffffffffffffff811115614379575f5ffd5b614385888289016141e4565b945050604086013567ffffffffffffffff8111156143a1575f5ffd5b6143ad88828901613db5565b935050606086013567ffffffffffffffff8111156143c9575f5ffd5b6143d588828901614246565b925050608086013567ffffffffffffffff8111156143f1575f5ffd5b61412c888289016142a8565b5f5f5f5f60808587031215614410575f5ffd5b61441985613f1c565b935061442760208601613f1c565b925060408501359150606085013567ffffffffffffffff811115614449575f5ffd5b61445587828801614078565b91505092959194509250565b5f5f5f60608486031215614473575f5ffd5b61447c84613f1c565b925060208401359150604084013567ffffffffffffffff81111561449e575f5ffd5b6144aa86828701614078565b9150509250925092565b5f5f604083850312156144c5575f5ffd5b823567ffffffffffffffff8111156144db575f5ffd5b6144e785828601613db5565b925050602083013567ffffffffffffffff811115614503575f5ffd5b613e7a858286016142a8565b5f5f5f5f60808587031215614522575f5ffd5b61452b85613f1c565b93506020850135925061454060408601614024565b9150606085013567ffffffffffffffff811115614449575f5ffd5b5f5f5f6060848603121561456d575f5ffd5b833567ffffffffffffffff811115614583575f5ffd5b61458f86828701613db5565b935050602084013567ffffffffffffffff8111156145ab575f5ffd5b6145b786828701613db5565b925050604084013567ffffffffffffffff8111156145d3575f5ffd5b6144aa868287016142a8565b5f5f5f606084860312156145f1575f5ffd5b8335925060208401359150604084013567ffffffffffffffff81111561449e575f5ffd5b5f60208284031215614625575f5ffd5b813567ffffffffffffffff81111561463b575f5ffd5b612a6284828501613db5565b8385823760609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919092019081526014810191909152603401919050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614700575f5ffd5b83018035915067ffffffffffffffff82111561471a575f5ffd5b60200191503681900382131561472e575f5ffd5b9250929050565b818382375f9101908152919050565b828152604060208201525f612a626040830184613cb8565b6001600160a01b03851681528360208201528215156040820152608060608201525f61478b6080830184613cb8565b9695505050505050565b805160208201517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116919060148210156147fa577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b600181811c9082168061481557607f821691505b602082108103611dd2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b6001600160a01b03841681528215156020820152606060408201525f6148756060830184613cb8565b95945050505050565b6001600160a01b03861681526001600160a01b03851660208201526001600160a01b038416604082015282606082015260a060808201525f61345c60a0830184613cb8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f816148fe576148fe6148c3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b601f821115610d9357805f5260205f20601f840160051c810160208510156149495750805b601f840160051c820191505b818110156110bf575f8155600101614955565b815167ffffffffffffffff81111561498257614982613d16565b614996816149908454614801565b84614924565b6020601f8211600181146149e7575f83156149b15750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110bf565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614a345787850151825560209485019460019092019101614a14565b5084821015614a7057868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f612a626040830184613cb8565b80516020808301519190811015611dd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60208284031215614aeb575f5ffd5b815167ffffffffffffffff811115614b01575f5ffd5b8201601f81018413614b11575f5ffd5b8051614b1f613dd282614033565b818152856020838501011115614b33575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b81810381811115610c5c57610c5c6148c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b80820180821115610c5c57610c5c6148c3565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bd357614bd36148c3565b506001019056fea2646970667358221220811160e47e4fb096868a4da137392eb25f3621613d414163072b464b6930595264736f6c634300081c0033ce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee30b4b3a36d7c2b72add3151898671aaed843238e580f7d6d4bc5077ce2023b0659975773d1e0a917a74b57f36a377f439ffff6271648aebdbff75a52ab58eb7bad9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
1750
+ "deployedBytecode": "0x60806040526004361061034d575f3560e01c80637e5cd5c1116101ba578063a3246ad3116100f6578063d539139311610094578063db8c96631161006e578063db8c966314610a75578063dedff9c614610a94578063e6fc609814610ab3578063f2fde38b14610ac8576103d8565b8063d539139314610a04578063d547741f14610a37578063d6c1407c14610a56576103d8565b8063be9f0e6f116100d0578063be9f0e6f14610980578063c282ca781461099f578063ca15c873146109b3578063d1ca0188146109d2576103d8565b8063a3246ad314610923578063a3b261f214610942578063af255b6114610961576103d8565b80638fb0573011610163578063941877531161013d57806394187753146108ae57806397902421146108e15780639e045773146108f4578063a217fddf14610910576103d8565b80638fb057301461085b5780639010d07c1461087057806391d148541461088f576103d8565b806384bfc8eb1161019457806384bfc8eb1461080157806386a10ddd146108205780638da5cb5b1461083f576103d8565b80637e5cd5c1146107bb5780637e87632c146107cf5780637f23690c146107ee576103d8565b806336568abe1161028957806354f6127f116102325780636c79b70b1161020c5780636c79b70b1461073657806370a0823114610755578063715018a6146107745780637c4acabf14610788576103d8565b806354f6127f146106e45780636963d43814610703578063696fd68c14610722576103d8565b806349a6078d1161026357806349a6078d14610685578063511b6952146106b157806352058d8a146106d0576103d8565b806336568abe1461062e57806345e14c461461064d57806346b45af71461066c576103d8565b80632121dc75116102f65780632a3654a4116102d05780632a3654a4146105ab5780632de94807146105ca5780632f2ff15d146105f657806334ac682314610615576103d8565b80632121dc7514610535578063217b227014610549578063248a9ca314610580576103d8565b806318160ddd1161032757806318160ddd146104d45780631d26fce6146104e85780631e4e009114610514576103d8565b806301ffc9a71461043357806312318ac41461046757806316e023b3146104a8576103d8565b366103d857345f036103a6576040517fe5099ee300000000000000000000000000000000000000000000000000000000815260040161039d9060208082526004908201525f604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3660608282600481101561041b576040517fe5099ee300000000000000000000000000000000000000000000000000000000815260040161039d929190613c0d565b50506104278383610ae7565b80519350602001915050f35b34801561043e575f5ffd5b5061045261044d366004613c59565b610c62565b60405190151581526020015b60405180910390f35b348015610472575f5ffd5b5061049a7fb4b3a36d7c2b72add3151898671aaed843238e580f7d6d4bc5077ce2023b065981565b60405190815260200161045e565b3480156104b3575f5ffd5b506104c76104c2366004613c98565b610c6c565b60405161045e9190613d04565b3480156104df575f5ffd5b5060025461049a565b3480156104f3575f5ffd5b50610507610502366004613e1f565b610c7f565b60405161045e9190613e84565b34801561051f575f5ffd5b5061053361052e366004613c98565b610d7f565b005b348015610540575f5ffd5b50610452610d98565b348015610554575f5ffd5b50610568610563366004613f05565b610e1f565b6040516001600160a01b03909116815260200161045e565b34801561058b575f5ffd5b5061049a61059a366004613f05565b5f9081526006602052604090205490565b3480156105b6575f5ffd5b506104526105c5366004613f37565b610e71565b3480156105d5575f5ffd5b506105e96105e4366004613f5f565b610e7c565b60405161045e9190613f78565b348015610601575f5ffd5b50610533610610366004613fba565b610e9f565b348015610620575f5ffd5b50600c546104529060ff1681565b348015610639575f5ffd5b50610533610648366004613fba565b610ec0565b348015610658575f5ffd5b50610533610667366004613c98565b610f75565b348015610677575f5ffd5b506009546104529060ff1681565b348015610690575f5ffd5b506106a461069f366004613f05565b611039565b60405161045e9190613fe4565b3480156106bc575f5ffd5b506105336106cb3660046140c5565b61105a565b3480156106db575f5ffd5b5061049a6110c6565b3480156106ef575f5ffd5b506104c76106fe366004613f05565b6110fe565b34801561070e575f5ffd5b5061050761071d366004614139565b611109565b34801561072d575f5ffd5b5061053361124d565b348015610741575f5ffd5b506105336107503660046141aa565b6112f2565b348015610760575f5ffd5b5061049a61076f366004613f5f565b611354565b34801561077f575f5ffd5b50610533611374565b348015610793575f5ffd5b5061049a7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3081565b3480156107c6575f5ffd5b50610533611387565b3480156107da575f5ffd5b506105336107e9366004614327565b61141f565b6105336107fc3660046141aa565b611524565b34801561080c575f5ffd5b5061053361081b3660046143fd565b61156e565b34801561082b575f5ffd5b5061053361083a366004614461565b6116eb565b34801561084a575f5ffd5b505f546001600160a01b0316610568565b348015610866575f5ffd5b5061049a600b5481565b34801561087b575f5ffd5b5061056861088a366004613c98565b6118d3565b34801561089a575f5ffd5b506104526108a9366004613fba565b6118ea565b3480156108b9575f5ffd5b5061049a7f975773d1e0a917a74b57f36a377f439ffff6271648aebdbff75a52ab58eb7bad81565b6105336108ef3660046144b4565b6118f5565b3480156108ff575f5ffd5b50600c54610100900460ff16610452565b34801561091b575f5ffd5b5061049a5f81565b34801561092e575f5ffd5b506106a461093d366004613f05565b61193f565b34801561094d575f5ffd5b506105e961095c366004613f5f565b611958565b34801561096c575f5ffd5b5061053361097b36600461450f565b61197b565b34801561098b575f5ffd5b5061053361099a36600461455b565b6119b1565b3480156109aa575f5ffd5b50610533611aaa565b3480156109be575f5ffd5b5061049a6109cd366004613f05565b611b47565b3480156109dd575f5ffd5b507f000000000000000000000000000000000000000000000000000000000000000061049a565b348015610a0f575f5ffd5b5061049a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b348015610a42575f5ffd5b50610533610a51366004613fba565b611b5d565b348015610a61575f5ffd5b50610533610a703660046145df565b611be6565b348015610a80575f5ffd5b50610533610a8f36600461450f565b611bf9565b348015610a9f575f5ffd5b50610507610aae366004614615565b611d2e565b348015610abe575f5ffd5b5061049a600a5481565b348015610ad3575f5ffd5b50610533610ae2366004613f5f565b611dd8565b60605f610b165f357fffffffff0000000000000000000000000000000000000000000000000000000016611e82565b5090507fffffffff000000000000000000000000000000000000000000000000000000005f35166001600160a01b038216610ba2576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000909116600482015260240161039d565b505f5f826001600160a01b03163487873334604051602001610bc79493929190614647565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bff9161468a565b5f6040518083038185875af1925050503d805f8114610c39576040519150601f19603f3d011682016040523d82523d5f602084013e610c3e565b606091505b50915091508115610c53579250610c5c915050565b80518060208301fd5b92915050565b5f610c5c82611f40565b6060610c788383611f59565b9392505050565b60608151835114610cbc576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825167ffffffffffffffff811115610cd657610cd6613d16565b604051908082528060200260200182016040528015610d0957816020015b6060815260200190600190039081610cf45790505b5090505f5b8351811015610d7857610d53848281518110610d2c57610d2c6146a0565b6020026020010151848381518110610d4657610d466146a0565b6020026020010151611f59565b828281518110610d6557610d656146a0565b6020908102919091010152600101610d0e565b5092915050565b5f610d898161202c565b610d938383612036565b505050565b600c545f9060ff16610daa5750600190565b600a54600b54901580159115159082610dc1575080155b15610dcf5760019250505090565b81158015610dda5750805b15610deb5742600b54109250505090565b818015610df6575080155b15610e075742600a54119250505090565b42600a541180610e18575042600b54105b9250505090565b5f818152600360205260408120546001600160a01b03168281610d78576040517fae8f9a3600000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b5f610c7883836120b4565b6001600160a01b0381165f908152600860205260409020606090610c5c906120ef565b5f82815260066020526040902054610eb68161202c565b610d9383836120fb565b6001600160a01b0381163314610f02576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81158015610f1957505f546001600160a01b031633145b1533839091610f65576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b5050610f718233612178565b5050565b610f7d6121f5565b600c5460ff16610fb9576040517f18d504ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580610fc65750818110155b610ffc576040517f9e33937e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a829055600b819055604051819083906001907f425e44dd36676a155d17433393a65b24c8fbb83d07ee2fa66bb951209797ff86905f90a45050565b606061104482612268565b5f828152600560205260409020610c5c906120ef565b61106433846120b4565b833390916110b0576040517f1294d2a900000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b0316602482015260440161039d565b50506110bf85858585856122bc565b5050505050565b6009545f9060ff166110d9575060025490565b507f000000000000000000000000000000000000000000000000000000000000000090565b6060610c5c8261250a565b60608167ffffffffffffffff81111561112457611124613d16565b60405190808252806020026020018201604052801561115757816020015b60608152602001906001900390816111425790505b5090505f5b82811015610d78575f8030868685818110611179576111796146a0565b905060200281019061118b91906146cd565b604051611199929190614735565b5f60405180830381855af49150503d805f81146111d1576040519150601f19603f3d011682016040523d82523d5f602084013e6111d6565b606091505b509150915081611225578051156111f05780518082602001fd5b6040517f234eb8190000000000000000000000000000000000000000000000000000000081526004810184905260240161039d565b80848481518110611238576112386146a0565b6020908102919091010152505060010161115c565b6112556121f5565b600c5460ff16611291576040517fe8587b0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555f600a819055600b819055604051819081907f425e44dd36676a155d17433393a65b24c8fbb83d07ee2fa66bb951209797ff86908290a4565b6112fc33836120b4565b82339091611348576040517f1294d2a900000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b0316602482015260440161039d565b5050610f7182826125a9565b6001600160a01b0381165f908152600460205260408120610c5c906126bc565b61137c6121f5565b6113855f6126c5565b565b61138f6121f5565b60095460ff166113cb576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040515f907f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4908290a2565b84518451811480156114315750835181145b801561143d5750825181145b80156114495750815181145b61147f576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8181101561151b5761151387828151811061149e5761149e6146a0565b60200260200101518783815181106114b8576114b86146a0565b60200260200101518784815181106114d2576114d26146a0565b60200260200101518785815181106114ec576114ec6146a0565b6020026020010151878681518110611506576115066146a0565b602002602001015161105a565b600101611481565b50505050505050565b61152c6121f5565b3415611564576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7182826126ce565b7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee306115988161202c565b600c54610100900460ff166115d9576040517f973495bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546001600160a01b038581169116148061161957506116197fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee30856118ea565b84907fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3090611684576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b5050836001600160a01b0316856001600160a01b0316336001600160a01b03167fa0e44189cd74cca42b38714145390a2883cea7e03e260877ac743db0b43eb7df86866040516116d5929190614744565b60405180910390a46110bf8585856001866122bc565b5f6116f583610e1f565b90508083336001600160a01b0383168114611758576040517f5b271ea20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201526024810192909252909116604482015260640161039d565b5050506001600160a01b03841661179b576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b0316846001600160a01b0316036117e6576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8381526005602052604081206117fd9086612731565b9050848482611849576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b505083826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712158660405161188f9190613d04565b60405180910390a45f33856001866040516020016118b0949392919061475c565b60405160208183030381529060405290506118cb8682612745565b505050505050565b5f828152600760205260408120610c789083612770565b5f610c78838361277b565b6118fd6121f5565b3415611935576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f718282612792565b5f818152600760205260409020606090610c5c906120ef565b6001600160a01b0381165f908152600460205260409020606090610c5c906120ef565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66119a58161202c565b6110bf85858585612856565b6119b96121f5565b815183511480156119cb575080518251145b611a01576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f03611a3b576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8351811015611aa457611a9c848281518110611a5b57611a5b6146a0565b6020026020010151848381518110611a7557611a756146a0565b6020026020010151848481518110611a8f57611a8f6146a0565b602002602001015161289e565b600101611a3d565b50505050565b611ab26121f5565b600c54610100900460ff16611af3576040517f973495bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690556040515f907f67e25b3c9018f015458c04997debf5769d7c1727a0918c43acfe4daf80ac7017908290a2565b5f818152600760205260408120610c5c906126bc565b5f82815260066020526040902054611b748161202c565b82158015611b8e57505f546001600160a01b038381169116145b1582849091611bda576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b5050610d938383612178565b611bee6121f5565b610d9383838361289e565b5f611c0384610e1f565b9050336001600160a01b03821614611c78573381856001600160a01b0388168314611c74576040517f760b5acd0000000000000000000000000000000000000000000000000000000081526001600160a01b039384166004820152929091166024830152604482015260640161039d565b5050505b6001600160a01b038516611cb8576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b0316856001600160a01b031603611d03576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d10858286868661292c565b82156110bf575f81855f856040516020016118b0949392919061475c565b6060815167ffffffffffffffff811115611d4a57611d4a613d16565b604051908082528060200260200182016040528015611d7d57816020015b6060815260200190600190039081611d685790505b5090505f5b8251811015611dd257611dad838281518110611da057611da06146a0565b602002602001015161250a565b828281518110611dbf57611dbf6146a0565b6020908102919091010152600101611d82565b50919050565b611de06121f5565b6001600160a01b038116611e76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161039d565b611e7f816126c5565b50565b5f8080611ed17fcee78b4094da86011096000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000086166129e7565b90505f611edd8261250a565b9050805160141480611eee57508051155b8190611f27576040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161039d9190613d04565b50611f3181614795565b60601c95600195509350505050565b5f611f4a82612a6a565b80610c5c5750610c5c82612b4d565b606060015f8484604051602001611f7a929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f208054611fa890614801565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd490614801565b801561201f5780601f10611ff65761010080835404028352916020019161201f565b820191905f5260205f20905b81548152906001019060200180831161200257829003601f168201915b5050505050905092915050565b611e7f8133612bb1565b8161206d576040517fd0dc904b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260066020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f6120be82610e1f565b6001600160a01b0316836001600160a01b03161480610c7857505f828152600560205260409020610c789084612c06565b60605f610c7883612c27565b5f8281526007602052604081206121129083612731565b90508015610d93576001600160a01b0382165f90815260086020526040902061213b9084612c7f565b5060405133906001600160a01b0384169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a4505050565b5f82815260076020526040812061218f9083612c8a565b90508015610d93576001600160a01b0382165f9081526008602052604090206121b89084612c9e565b5060405133906001600160a01b0384169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f546001600160a01b03163314611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039d565b5f818152600360205260409020546001600160a01b031615158190610f71576040517fae8f9a3600000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b5f6122c684610e1f565b90508084876001600160a01b038181169084161461232c576040517f5b271ea20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201526024810192909252909116604482015260640161039d565b5050506001600160a01b03851661236f576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237c8686868686612ca9565b5f61238685610e1f565b90508482826001600160a01b03808216908316146123ea576040517f5a9c31d300000000000000000000000000000000000000000000000000000000815260048101939093526001600160a01b03918216602484015216604482015260640161039d565b5050506123f78786612cb6565b6001600160a01b0387165f9081526004602052604090206124189086612c9e565b506001600160a01b0386165f90815260046020526040902061243a9086612c7f565b505f858152600360205260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906124b89033908a908a9061484c565b60405180910390a45f33888888876040516020016124da95949392919061487e565b60405160208183030381529060405290506124f58882612d09565b612500878683612d34565b5050505050505050565b5f81815260016020526040902080546060919061252690614801565b80601f016020809104026020016040519081016040528092919081815260200182805461255290614801565b801561259d5780601f106125745761010080835404028352916020019161259d565b820191905f5260205f20905b81548152906001019060200180831161258057829003601f168201915b50505050509050919050565b5f6125b383610e1f565b90506125c2815f855f86612ca9565b6125cb83610e1f565b905060025f81546125db906148f0565b909155506125e98184612cb6565b6001600160a01b0381165f90815260046020526040902061260a9084612c9e565b505f8381526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518491906001600160a01b038416907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061267f9033908590899061484c565b60405180910390a45f33825f86866040516020016126a195949392919061487e565b6040516020818303038152906040529050611aa48282612d09565b5f610c5c825490565b611e7f81612eb9565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201612727576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f718282612f93565b5f610c78836001600160a01b0384166130f2565b610f71827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f009708361313e565b5f610c7883836131bd565b5f828152600760205260408120610c789083612c06565b80518251146127cd576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81515f03612807576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610d935761284e838281518110612827576128276146a0565b6020026020010151838381518110612841576128416146a0565b60200260200101516126ce565b600101612809565b60095460ff16612892576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa4848484846131e3565b8060015f85856040516020016128be929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f2090816128ed9190614968565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161291f9190613d04565b60405180910390a3505050565b5f8381526005602052604081206129439087612c8a565b905085848261298f576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b505083856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c86866040516129d7929190614a7f565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201525f602a82018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008416602c83015291829101604051602081830303815290604052905080612a6290614a99565b949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480612afc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000145b80610c5c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f90832245000000000000000000000000000000000000000000000000000000001492915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3a271706000000000000000000000000000000000000000000000000000000001480612ba25750612ba2826131fb565b80610c5c5750610c5c82613250565b612bbb828261277b565b81839091611aa4576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260440161039d565b6001600160a01b0381165f9081526001830160205260408120541515610c78565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561259d57602002820191905f5260205f20905b815481526020019060010190808311612c605750505050509050919050565b5f610c7883836130f2565b5f610c78836001600160a01b03841661329e565b5f610c78838361329e565b6110bf8585858585613381565b5f81815260056020526040812090612ccd826126bc565b90505f5f5b828110156118cb57612ce4845f612770565b9150612d018287875f60405180602001604052805f81525061292c565b600101612cd2565b610f71827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab008361313e565b612d5e837f6bb56a140000000000000000000000000000000000000000000000000000000061339b565b15612e2a576040517f6bb56a140000000000000000000000000000000000000000000000000000000081526001600160a01b03841690636bb56a1490612dca907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401614744565b5f604051808303815f875af1158015612de5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611aa49190810190614adb565b81610d93576001600160a01b0383163b15612e7c576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161039d565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161039d565b612ee37fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee305f612036565b612eec81613467565b5f612f167fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3061193f565b90505f5b8151811015610d93575f828281518110612f3657612f366146a0565b60200260200101519050836001600160a01b0316816001600160a01b031603612f5f5750612f8b565b612f897fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee3082612178565b505b600101612f1a565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612fec576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201613045576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d820161309e576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526001602052604090206130b58282614968565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516130e69190613d04565b60405180910390a25050565b5f81815260018301602052604081205461313757508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610c5c565b505f610c5c565b6131716001600160a01b0384167f6bb56a140000000000000000000000000000000000000000000000000000000061339b565b15610d93576040517f6bb56a140000000000000000000000000000000000000000000000000000000081526001600160a01b03841690636bb56a1490612dca9085908590600401614744565b5f825f0182815481106131d2576131d26146a0565b905f5260205f200154905092915050565b6131ef8484848461349a565b611aa4848484846134f8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa918fa6b000000000000000000000000000000000000000000000000000000001480610c5c5750610c5c82613540565b5f8061327b7f01ffc9a700000000000000000000000000000000000000000000000000000000611e82565b5090506001600160a01b03811661329457505f92915050565b610c78818461339b565b5f8181526001830160205260408120548015613378575f6132c0600183614b50565b85549091505f906132d390600190614b50565b9050818114613332575f865f0182815481106132f1576132f16146a0565b905f5260205f200154905080875f018481548110613311576133116146a0565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061334357613343614b63565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610c5c565b5f915050610c5c565b61338e85858585856135d6565b6110bf85858585856135f0565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282515f9392849283928392918391908a617530fa92503d91505f519050828015613451575060208210155b801561345c57505f81115b979650505050505050565b6134917fb4b3a36d7c2b72add3151898671aaed843238e580f7d6d4bc5077ce2023b06595f612036565b611e7f81613602565b6134a26110c6565b15806134c257506134b16110c6565b6002546134bf906001614b90565b11155b611aa4576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460ff16613534576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa484848484613635565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f629aa694000000000000000000000000000000000000000000000000000000001480610c5c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610c5c565b6135df84613814565b6110bf576110bf85858585856138e6565b6135fd8585858585613973565b6110bf565b61362c7f975773d1e0a917a74b57f36a377f439ffff6271648aebdbff75a52ab58eb7bad5f612036565b611e7f8161398d565b6001600160a01b038416613675576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8381526003602052604090205483906001600160a01b0316156136c8576040517f34c7b51100000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b506136d65f85858585612ca9565b5f8381526003602052604090205483906001600160a01b031615613729576040517f34c7b51100000000000000000000000000000000000000000000000000000000815260040161039d91815260200190565b5060025f815461373890614ba3565b909155506001600160a01b0384165f90815260046020526040902061375d9084612c7f565b505f8381526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906137d69033908890889061484c565b60405180910390a45f335f8686856040516020016137f895949392919061487e565b60405160208183030381529060405290506110bf858483612d34565b5f80357fffffffff00000000000000000000000000000000000000000000000000000000167f84bfc8eb0000000000000000000000000000000000000000000000000000000014801561386e5750600c54610100900460ff165b801561389f575061389f7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee30336118ea565b8015610c5c57505f546001600160a01b0383811691161480610c5c5750610c5c7fce3f34913921da558f105cefb578d87278debbbd073a8d552b5de0d168deee30836118ea565b6001600160a01b038516158061390357506001600160a01b038416155b6110bf576139317fb4b3a36d7c2b72add3151898671aaed843238e580f7d6d4bc5077ce2023b0659866118ea565b6110bf5761393d610d98565b6110bf576040517f9ade414200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61397c84613814565b6110bf576110bf85858585856139c0565b6139b77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a65f612036565b611e7f81613b1c565b836001600160a01b0316856001600160a01b031603156110bf576001600160a01b03841615806139fa57506001600160a01b03841661dead145b6110bf57613a287f975773d1e0a917a74b57f36a377f439ffff6271648aebdbff75a52ab58eb7bad856118ea565b6110bf577f000000000000000000000000000000000000000000000000000000000000000080151580613a5c5750506110bf565b7f0000000000000000000000000000000000000000000000000000000000000000613a8687611354565b613a91906001614b90565b111586613a9d88611354565b7f0000000000000000000000000000000000000000000000000000000000000000909192613b10576040517fe6bf112c0000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830191909152604482015260640161039d565b50505050505050505050565b5f546001600160a01b0316613b3082613ba6565b6001600160a01b0381165f908152600860205260408120613b50906120ef565b90505f5b8151811015611aa4575f828281518110613b7057613b706146a0565b60200260200101519050613b848185612178565b6001600160a01b03851615613b9d57613b9d81866120fb565b50600101613b54565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60208152816020820152818360408301375f818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b5f60208284031215613c69575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c78575f5ffd5b5f5f60408385031215613ca9575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c786020830184613cb8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613d8a57613d8a613d16565b604052919050565b5f67ffffffffffffffff821115613dab57613dab613d16565b5060051b60200190565b5f82601f830112613dc4575f5ffd5b8135613dd7613dd282613d92565b613d43565b8082825260208201915060208360051b860101925085831115613df8575f5ffd5b602085015b83811015613e15578035835260209283019201613dfd565b5095945050505050565b5f5f60408385031215613e30575f5ffd5b823567ffffffffffffffff811115613e46575f5ffd5b613e5285828601613db5565b925050602083013567ffffffffffffffff811115613e6e575f5ffd5b613e7a85828601613db5565b9150509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613ef9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613ee4858351613cb8565b94506020938401939190910190600101613eaa565b50929695505050505050565b5f60208284031215613f15575f5ffd5b5035919050565b80356001600160a01b0381168114613f32575f5ffd5b919050565b5f5f60408385031215613f48575f5ffd5b613f5183613f1c565b946020939093013593505050565b5f60208284031215613f6f575f5ffd5b610c7882613f1c565b602080825282518282018190525f918401906040840190835b81811015613faf578351835260209384019390920191600101613f91565b509095945050505050565b5f5f60408385031215613fcb575f5ffd5b82359150613fdb60208401613f1c565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015613faf5783516001600160a01b0316835260209384019390920191600101613ffd565b80358015158114613f32575f5ffd5b5f67ffffffffffffffff82111561404c5761404c613d16565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112614087575f5ffd5b8135614095613dd282614033565b8181528460208386010111156140a9575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156140d9575f5ffd5b6140e286613f1c565b94506140f060208701613f1c565b93506040860135925061410560608701614024565b9150608086013567ffffffffffffffff811115614120575f5ffd5b61412c88828901614078565b9150509295509295909350565b5f5f6020838503121561414a575f5ffd5b823567ffffffffffffffff811115614160575f5ffd5b8301601f81018513614170575f5ffd5b803567ffffffffffffffff811115614186575f5ffd5b8560208260051b840101111561419a575f5ffd5b6020919091019590945092505050565b5f5f604083850312156141bb575f5ffd5b82359150602083013567ffffffffffffffff8111156141d8575f5ffd5b613e7a85828601614078565b5f82601f8301126141f3575f5ffd5b8135614201613dd282613d92565b8082825260208201915060208360051b860101925085831115614222575f5ffd5b602085015b83811015613e155761423881613f1c565b835260209283019201614227565b5f82601f830112614255575f5ffd5b8135614263613dd282613d92565b8082825260208201915060208360051b860101925085831115614284575f5ffd5b602085015b83811015613e155761429a81614024565b835260209283019201614289565b5f82601f8301126142b7575f5ffd5b81356142c5613dd282613d92565b8082825260208201915060208360051b8601019250858311156142e6575f5ffd5b602085015b83811015613e1557803567ffffffffffffffff811115614309575f5ffd5b614318886020838a0101614078565b845250602092830192016142eb565b5f5f5f5f5f60a0868803121561433b575f5ffd5b853567ffffffffffffffff811115614351575f5ffd5b61435d888289016141e4565b955050602086013567ffffffffffffffff811115614379575f5ffd5b614385888289016141e4565b945050604086013567ffffffffffffffff8111156143a1575f5ffd5b6143ad88828901613db5565b935050606086013567ffffffffffffffff8111156143c9575f5ffd5b6143d588828901614246565b925050608086013567ffffffffffffffff8111156143f1575f5ffd5b61412c888289016142a8565b5f5f5f5f60808587031215614410575f5ffd5b61441985613f1c565b935061442760208601613f1c565b925060408501359150606085013567ffffffffffffffff811115614449575f5ffd5b61445587828801614078565b91505092959194509250565b5f5f5f60608486031215614473575f5ffd5b61447c84613f1c565b925060208401359150604084013567ffffffffffffffff81111561449e575f5ffd5b6144aa86828701614078565b9150509250925092565b5f5f604083850312156144c5575f5ffd5b823567ffffffffffffffff8111156144db575f5ffd5b6144e785828601613db5565b925050602083013567ffffffffffffffff811115614503575f5ffd5b613e7a858286016142a8565b5f5f5f5f60808587031215614522575f5ffd5b61452b85613f1c565b93506020850135925061454060408601614024565b9150606085013567ffffffffffffffff811115614449575f5ffd5b5f5f5f6060848603121561456d575f5ffd5b833567ffffffffffffffff811115614583575f5ffd5b61458f86828701613db5565b935050602084013567ffffffffffffffff8111156145ab575f5ffd5b6145b786828701613db5565b925050604084013567ffffffffffffffff8111156145d3575f5ffd5b6144aa868287016142a8565b5f5f5f606084860312156145f1575f5ffd5b8335925060208401359150604084013567ffffffffffffffff81111561449e575f5ffd5b5f60208284031215614625575f5ffd5b813567ffffffffffffffff81111561463b575f5ffd5b612a6284828501613db5565b8385823760609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919092019081526014810191909152603401919050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614700575f5ffd5b83018035915067ffffffffffffffff82111561471a575f5ffd5b60200191503681900382131561472e575f5ffd5b9250929050565b818382375f9101908152919050565b828152604060208201525f612a626040830184613cb8565b6001600160a01b03851681528360208201528215156040820152608060608201525f61478b6080830184613cb8565b9695505050505050565b805160208201517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116919060148210156147fa577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b600181811c9082168061481557607f821691505b602082108103611dd2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b6001600160a01b03841681528215156020820152606060408201525f6148756060830184613cb8565b95945050505050565b6001600160a01b03861681526001600160a01b03851660208201526001600160a01b038416604082015282606082015260a060808201525f61345c60a0830184613cb8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f816148fe576148fe6148c3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b601f821115610d9357805f5260205f20601f840160051c810160208510156149495750805b601f840160051c820191505b818110156110bf575f8155600101614955565b815167ffffffffffffffff81111561498257614982613d16565b614996816149908454614801565b84614924565b6020601f8211600181146149e7575f83156149b15750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110bf565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614a345787850151825560209485019460019092019101614a14565b5084821015614a7057868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f612a626040830184613cb8565b80516020808301519190811015611dd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60208284031215614aeb575f5ffd5b815167ffffffffffffffff811115614b01575f5ffd5b8201601f81018413614b11575f5ffd5b8051614b1f613dd282614033565b818152856020838501011115614b33575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b81810381811115610c5c57610c5c6148c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b80820180821115610c5c57610c5c6148c3565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bd357614bd36148c3565b506001019056fea2646970667358221220811160e47e4fb096868a4da137392eb25f3621613d414163072b464b6930595264736f6c634300081c0033",
1751
+ "linkReferences": {},
1752
+ "deployedLinkReferences": {},
1753
+ "immutableReferences": {
1754
+ "24025": [
1755
+ {
1756
+ "length": 32,
1757
+ "start": 2528
1758
+ },
1759
+ {
1760
+ "length": 32,
1761
+ "start": 14894
1762
+ },
1763
+ {
1764
+ "length": 32,
1765
+ "start": 14942
1766
+ },
1767
+ {
1768
+ "length": 32,
1769
+ "start": 15007
1770
+ }
1771
+ ],
1772
+ "24501": [
1773
+ {
1774
+ "length": 32,
1775
+ "start": 4316
1776
+ }
1777
+ ]
1778
+ },
1779
+ "inputSourceName": "project/contracts/presets/LSP8CustomizableToken.sol",
1780
+ "buildInfoId": "solc-0_8_28-a1f189205db65800e276c245fa7f2fa7071cb3a5"
1781
+ }