@keep-network/tbtc-v2 0.1.1-dev.13 → 0.1.1-dev.16

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 (29) hide show
  1. package/artifacts/TBTC.json +11 -11
  2. package/artifacts/TBTCToken.json +11 -11
  3. package/artifacts/VendingMachine.json +18 -18
  4. package/artifacts/solcInputs/{ae2bc16e265d94d570ec143fe628377f.json → 3d68045732e072924745a5b701f4ad2a.json} +18 -12
  5. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  6. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.json +2 -2
  7. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  8. package/build/contracts/bank/Bank.sol/Bank.json +2 -2
  9. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  10. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  11. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  12. package/build/contracts/bridge/Bridge.sol/Bridge.json +365 -2
  13. package/build/contracts/bridge/Bridge.sol/IRelay.dbg.json +1 -1
  14. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  15. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
  16. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  17. package/build/contracts/token/TBTC.sol/TBTC.json +2 -2
  18. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  19. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  20. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
  21. package/contracts/GovernanceUtils.sol +1 -1
  22. package/contracts/bank/Bank.sol +18 -17
  23. package/contracts/bridge/BitcoinTx.sol +3 -2
  24. package/contracts/bridge/Bridge.sol +912 -127
  25. package/contracts/bridge/VendingMachine.sol +1 -1
  26. package/contracts/token/TBTC.sol +1 -1
  27. package/contracts/vault/IVault.sol +1 -1
  28. package/contracts/vault/TBTCVault.sol +1 -1
  29. package/package.json +6 -7
@@ -15,6 +15,11 @@
15
15
  "name": "_relay",
16
16
  "type": "address"
17
17
  },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_treasury",
21
+ "type": "address"
22
+ },
18
23
  {
19
24
  "internalType": "uint256",
20
25
  "name": "_txProofDifficultyFactor",
@@ -123,6 +128,68 @@
123
128
  "name": "OwnershipTransferred",
124
129
  "type": "event"
125
130
  },
131
+ {
132
+ "anonymous": false,
133
+ "inputs": [
134
+ {
135
+ "indexed": false,
136
+ "internalType": "bytes20",
137
+ "name": "walletPubKeyHash",
138
+ "type": "bytes20"
139
+ },
140
+ {
141
+ "indexed": false,
142
+ "internalType": "bytes",
143
+ "name": "redeemerOutputScript",
144
+ "type": "bytes"
145
+ },
146
+ {
147
+ "indexed": false,
148
+ "internalType": "address",
149
+ "name": "redeemer",
150
+ "type": "address"
151
+ },
152
+ {
153
+ "indexed": false,
154
+ "internalType": "uint64",
155
+ "name": "requestedAmount",
156
+ "type": "uint64"
157
+ },
158
+ {
159
+ "indexed": false,
160
+ "internalType": "uint64",
161
+ "name": "treasuryFee",
162
+ "type": "uint64"
163
+ },
164
+ {
165
+ "indexed": false,
166
+ "internalType": "uint64",
167
+ "name": "txMaxFee",
168
+ "type": "uint64"
169
+ }
170
+ ],
171
+ "name": "RedemptionRequested",
172
+ "type": "event"
173
+ },
174
+ {
175
+ "anonymous": false,
176
+ "inputs": [
177
+ {
178
+ "indexed": false,
179
+ "internalType": "bytes20",
180
+ "name": "walletPubKeyHash",
181
+ "type": "bytes20"
182
+ },
183
+ {
184
+ "indexed": false,
185
+ "internalType": "bytes32",
186
+ "name": "redemptionTxHash",
187
+ "type": "bytes32"
188
+ }
189
+ ],
190
+ "name": "RedemptionsCompleted",
191
+ "type": "event"
192
+ },
126
193
  {
127
194
  "anonymous": false,
128
195
  "inputs": [
@@ -245,6 +312,97 @@
245
312
  "stateMutability": "view",
246
313
  "type": "function"
247
314
  },
315
+ {
316
+ "inputs": [
317
+ {
318
+ "internalType": "uint256",
319
+ "name": "",
320
+ "type": "uint256"
321
+ }
322
+ ],
323
+ "name": "pendingRedemptions",
324
+ "outputs": [
325
+ {
326
+ "internalType": "address",
327
+ "name": "redeemer",
328
+ "type": "address"
329
+ },
330
+ {
331
+ "internalType": "uint64",
332
+ "name": "requestedAmount",
333
+ "type": "uint64"
334
+ },
335
+ {
336
+ "internalType": "uint64",
337
+ "name": "treasuryFee",
338
+ "type": "uint64"
339
+ },
340
+ {
341
+ "internalType": "uint64",
342
+ "name": "txMaxFee",
343
+ "type": "uint64"
344
+ },
345
+ {
346
+ "internalType": "uint32",
347
+ "name": "requestedAt",
348
+ "type": "uint32"
349
+ }
350
+ ],
351
+ "stateMutability": "view",
352
+ "type": "function"
353
+ },
354
+ {
355
+ "inputs": [],
356
+ "name": "redemptionDustThreshold",
357
+ "outputs": [
358
+ {
359
+ "internalType": "uint64",
360
+ "name": "",
361
+ "type": "uint64"
362
+ }
363
+ ],
364
+ "stateMutability": "view",
365
+ "type": "function"
366
+ },
367
+ {
368
+ "inputs": [],
369
+ "name": "redemptionTimeout",
370
+ "outputs": [
371
+ {
372
+ "internalType": "uint256",
373
+ "name": "",
374
+ "type": "uint256"
375
+ }
376
+ ],
377
+ "stateMutability": "view",
378
+ "type": "function"
379
+ },
380
+ {
381
+ "inputs": [],
382
+ "name": "redemptionTreasuryFee",
383
+ "outputs": [
384
+ {
385
+ "internalType": "uint64",
386
+ "name": "",
387
+ "type": "uint64"
388
+ }
389
+ ],
390
+ "stateMutability": "view",
391
+ "type": "function"
392
+ },
393
+ {
394
+ "inputs": [],
395
+ "name": "redemptionTxMaxFee",
396
+ "outputs": [
397
+ {
398
+ "internalType": "uint64",
399
+ "name": "",
400
+ "type": "uint64"
401
+ }
402
+ ],
403
+ "stateMutability": "view",
404
+ "type": "function"
405
+ },
248
406
  {
249
407
  "inputs": [],
250
408
  "name": "relay",
@@ -265,6 +423,51 @@
265
423
  "stateMutability": "nonpayable",
266
424
  "type": "function"
267
425
  },
426
+ {
427
+ "inputs": [
428
+ {
429
+ "internalType": "bytes20",
430
+ "name": "walletPubKeyHash",
431
+ "type": "bytes20"
432
+ },
433
+ {
434
+ "components": [
435
+ {
436
+ "internalType": "bytes32",
437
+ "name": "txHash",
438
+ "type": "bytes32"
439
+ },
440
+ {
441
+ "internalType": "uint32",
442
+ "name": "txOutputIndex",
443
+ "type": "uint32"
444
+ },
445
+ {
446
+ "internalType": "uint64",
447
+ "name": "txOutputValue",
448
+ "type": "uint64"
449
+ }
450
+ ],
451
+ "internalType": "struct BitcoinTx.UTXO",
452
+ "name": "mainUtxo",
453
+ "type": "tuple"
454
+ },
455
+ {
456
+ "internalType": "bytes",
457
+ "name": "redeemerOutputScript",
458
+ "type": "bytes"
459
+ },
460
+ {
461
+ "internalType": "uint64",
462
+ "name": "amount",
463
+ "type": "uint64"
464
+ }
465
+ ],
466
+ "name": "requestRedemption",
467
+ "outputs": [],
468
+ "stateMutability": "nonpayable",
469
+ "type": "function"
470
+ },
268
471
  {
269
472
  "inputs": [
270
473
  {
@@ -360,6 +563,90 @@
360
563
  "stateMutability": "nonpayable",
361
564
  "type": "function"
362
565
  },
566
+ {
567
+ "inputs": [
568
+ {
569
+ "components": [
570
+ {
571
+ "internalType": "bytes4",
572
+ "name": "version",
573
+ "type": "bytes4"
574
+ },
575
+ {
576
+ "internalType": "bytes",
577
+ "name": "inputVector",
578
+ "type": "bytes"
579
+ },
580
+ {
581
+ "internalType": "bytes",
582
+ "name": "outputVector",
583
+ "type": "bytes"
584
+ },
585
+ {
586
+ "internalType": "bytes4",
587
+ "name": "locktime",
588
+ "type": "bytes4"
589
+ }
590
+ ],
591
+ "internalType": "struct BitcoinTx.Info",
592
+ "name": "redemptionTx",
593
+ "type": "tuple"
594
+ },
595
+ {
596
+ "components": [
597
+ {
598
+ "internalType": "bytes",
599
+ "name": "merkleProof",
600
+ "type": "bytes"
601
+ },
602
+ {
603
+ "internalType": "uint256",
604
+ "name": "txIndexInBlock",
605
+ "type": "uint256"
606
+ },
607
+ {
608
+ "internalType": "bytes",
609
+ "name": "bitcoinHeaders",
610
+ "type": "bytes"
611
+ }
612
+ ],
613
+ "internalType": "struct BitcoinTx.Proof",
614
+ "name": "redemptionProof",
615
+ "type": "tuple"
616
+ },
617
+ {
618
+ "components": [
619
+ {
620
+ "internalType": "bytes32",
621
+ "name": "txHash",
622
+ "type": "bytes32"
623
+ },
624
+ {
625
+ "internalType": "uint32",
626
+ "name": "txOutputIndex",
627
+ "type": "uint32"
628
+ },
629
+ {
630
+ "internalType": "uint64",
631
+ "name": "txOutputValue",
632
+ "type": "uint64"
633
+ }
634
+ ],
635
+ "internalType": "struct BitcoinTx.UTXO",
636
+ "name": "mainUtxo",
637
+ "type": "tuple"
638
+ },
639
+ {
640
+ "internalType": "bytes20",
641
+ "name": "walletPubKeyHash",
642
+ "type": "bytes20"
643
+ }
644
+ ],
645
+ "name": "submitRedemptionProof",
646
+ "outputs": [],
647
+ "stateMutability": "nonpayable",
648
+ "type": "function"
649
+ },
363
650
  {
364
651
  "inputs": [
365
652
  {
@@ -439,6 +726,45 @@
439
726
  "stateMutability": "nonpayable",
440
727
  "type": "function"
441
728
  },
729
+ {
730
+ "inputs": [
731
+ {
732
+ "internalType": "uint256",
733
+ "name": "",
734
+ "type": "uint256"
735
+ }
736
+ ],
737
+ "name": "timedOutRedemptions",
738
+ "outputs": [
739
+ {
740
+ "internalType": "address",
741
+ "name": "redeemer",
742
+ "type": "address"
743
+ },
744
+ {
745
+ "internalType": "uint64",
746
+ "name": "requestedAmount",
747
+ "type": "uint64"
748
+ },
749
+ {
750
+ "internalType": "uint64",
751
+ "name": "treasuryFee",
752
+ "type": "uint64"
753
+ },
754
+ {
755
+ "internalType": "uint64",
756
+ "name": "txMaxFee",
757
+ "type": "uint64"
758
+ },
759
+ {
760
+ "internalType": "uint32",
761
+ "name": "requestedAt",
762
+ "type": "uint32"
763
+ }
764
+ ],
765
+ "stateMutability": "view",
766
+ "type": "function"
767
+ },
442
768
  {
443
769
  "inputs": [
444
770
  {
@@ -452,6 +778,19 @@
452
778
  "stateMutability": "nonpayable",
453
779
  "type": "function"
454
780
  },
781
+ {
782
+ "inputs": [],
783
+ "name": "treasury",
784
+ "outputs": [
785
+ {
786
+ "internalType": "address",
787
+ "name": "",
788
+ "type": "address"
789
+ }
790
+ ],
791
+ "stateMutability": "view",
792
+ "type": "function"
793
+ },
455
794
  {
456
795
  "inputs": [],
457
796
  "name": "txProofDifficultyFactor",
@@ -464,10 +803,34 @@
464
803
  ],
465
804
  "stateMutability": "view",
466
805
  "type": "function"
806
+ },
807
+ {
808
+ "inputs": [
809
+ {
810
+ "internalType": "bytes20",
811
+ "name": "",
812
+ "type": "bytes20"
813
+ }
814
+ ],
815
+ "name": "wallets",
816
+ "outputs": [
817
+ {
818
+ "internalType": "enum Bridge.WalletState",
819
+ "name": "state",
820
+ "type": "uint8"
821
+ },
822
+ {
823
+ "internalType": "uint64",
824
+ "name": "pendingRedemptionsValue",
825
+ "type": "uint64"
826
+ }
827
+ ],
828
+ "stateMutability": "view",
829
+ "type": "function"
467
830
  }
468
831
  ],
469
- "bytecode": "0x60e06040523480156200001157600080fd5b50604051620037863803806200378683398101604081905262000034916200018f565b6200003f3362000122565b6001600160a01b0383166200009b5760405162461bcd60e51b815260206004820152601b60248201527f42616e6b20616464726573732063616e6e6f74206265207a65726f000000000060448201526064015b60405180910390fd5b6001600160601b0319606084901b1660a0526001600160a01b038216620001055760405162461bcd60e51b815260206004820152601c60248201527f52656c617920616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000092565b60609190911b6001600160601b03191660c05260805250620001cf565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200018a57600080fd5b919050565b600080600060608486031215620001a4578283fd5b620001af8462000172565b9250620001bf6020850162000172565b9150604084015190509250925092565b60805160a05160601c60c05160601c613566620002206000396000818161026f0152818161217d015261221201526000818161015b01526105ed01526000818160de015261247401526135666000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806383a4342811610081578063b59589d11161005b578063b59589d11461026a578063e53c0b5514610291578063f2fde38b146102c457600080fd5b806383a43428146101955780638da5cb5b146101b5578063b02c43d0146101c657600080fd5b806360d712fc116100b257806360d712fc1461013b578063715018a61461014e57806376cdb03b1461015657600080fd5b80632bb818c2146100d957806359a9d90a146101135780635c0b481214610128575b600080fd5b6101007f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610121366004612dfd565b6102d7565b005b610126610136366004612e66565b610665565b610126610149366004612d2e565b610c95565b610126610d4e565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010a565b6101006101a3366004612d68565b60036020526000908152604090205481565b6000546001600160a01b031661017d565b6102256101d4366004612f2e565b600260205260009081526040902080546001909101546001600160a01b0380831692600160a01b80820467ffffffffffffffff1693600160e01b90920463ffffffff90811693831692919091041685565b604080516001600160a01b03968716815267ffffffffffffffff909516602086015263ffffffff9384169085015293166060830152909116608082015260a00161010a565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6102b461029f366004612d14565b60016020526000908152604090205460ff1681565b604051901515815260200161010a565b6101266102d2366004612d14565b610db4565b60006102e38484610e96565b90506000806103326102f860408801886132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061101092505050565b60408051606081018252600080825260208083018290528284018290526bffffffffffffffffffffffff19861682526003905291909120549294509092509080156104515780863561038a6040890160208a01612f46565b61039a60608a0160408b01612f60565b6040516020016103d79392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b604051602081830303815290604052805190602001201461043f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b61044e36879003870187612ebe565b91505b600080806104a161046560208d018d6132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611143915050565b9194509250905060006104be67ffffffffffffffff88168561349b565b905060008251826104cf919061337d565b905060005b835181101561052757818482815181106104fe57634e487b7160e01b600052603260045260246000fd5b60200260200101818151610512919061349b565b9052508061051f816134d5565b9150506104d4565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f1901815282825280516020918201206bffffffffffffffffffffffff198d1660008181526003845284902091909155835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a16040517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266a123a906106249087908790600401613278565b600060405180830381600087803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061067760e0830160c08401612d14565b6001600160a01b031614806106b957506001600061069b60e0840160c08501612d14565b6001600160a01b0316815260208101919091526040016000205460ff165b6107055760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610436565b60006107176040830160208401612d14565b6107276060840160408501612dd5565b6107376080850160608601612d68565b61074760a0860160808701612d68565b61075760c0870160a08801612dad565b60405160200161076b959493929190612ff4565b60408051601f19818403018152919052905060006107df61078f6020850185612f46565b63ffffffff166107a260408701876132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061164c9050565b905060006107ec82611832565b905080516014141561087c5761080183611b39565b6bffffffffffffffffffffffff191661081b826000611b60565b6bffffffffffffffffffffffff1916146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610436565b610974565b80516020141561092c576002836040516108969190612fbb565b602060405180830381855afa1580156108b3573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906108d69190612d95565b6108df82611b76565b146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610436565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610436565b60006109d96109866020880188612dad565b61099360208901896132fb565b6109a060408b018b6132fb565b6109b060808d0160608e01612dad565b6040516020016109c596959493929190612f7a565b604051602081830303815290604052611b92565b90506000600281836109ee60208a018a612f46565b604051602001610a1592919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610a995760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610436565b6000610aa485611bb9565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff8316021783559050610aee6040880160208901612d14565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255610b3d60e0880160c08901612d14565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583610b9b60208a018a612f46565b610bab60408b0160208c01612d14565b84610bbc60608d0160408e01612dd5565b610bcc60808e0160608f01612d68565b8d6080016020810190610bdf9190612d68565b8e60a0016020810190610bf29190612dad565b8f60c0016020810190610c059190612d14565b60408051998a5263ffffffff90981660208a01526001600160a01b039687169789019790975267ffffffffffffffff90941660608801526001600160c01b031990921660808701526bffffffffffffffffffffffff1990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314610cef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b03163314610da85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b610db26000611c30565b565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038116610e8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610436565b610e9381611c30565b50565b6000610ee2610ea860208501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8d92505050565b610f2e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f76696465640000006044820152606401610436565b610f78610f3e60408501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3d92505050565b610fc45760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f766964656400006044820152606401610436565b610ffe610fd46020850185612dad565b610fe160208601866132fb565b610fee60408801886132fb565b6109b060808a0160608b01612dad565b905061100a8183611de0565b92915050565b600080600061101e84611f39565b915050806001146110975760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610436565b60006110a3858261164c565b90506110ae81611bb9565b925060006110bb82611832565b905080516014146111345760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610436565b60208101519450505050915091565b80516000906060908190151583808061115b89611f39565b9092509050600061116d836001613340565b905084156111855761118060018361349b565b611187565b815b67ffffffffffffffff8111156111ad57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111d6578160200160208202803683370190505b509650865167ffffffffffffffff81111561120157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561122a578160200160208202803683370190505b5095506000805b8381101561154f578b5183106112465761154f565b60008060006112558f87611f50565b925092509250600060026000858560405160200161128a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff16156114a7576001810154600160a01b900463ffffffff16156113255760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610436565b8c5186141561139c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b6001810180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b4263ffffffff160217905580548d516001600160a01b03909116908e908890811061140457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03929092166020928302919091019091015280548c51600160a01b90910467ffffffffffffffff16908d908890811061145457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b868151811061148057634e487b7160e01b600052603260045260246000fd5b60200260200101518e6114939190613340565b9d508561149f816134d5565b96505061152c565b8915158b1515141580156114bb57508e5184145b156114e45760408f01516114d99067ffffffffffffffff168f613340565b9d506001995061152c565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610436565b6115368288613340565b9650505050508080611547906134d5565b915050611231565b50600081116115c65760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610436565b8415158615151461163f5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b5050505050509250925092565b606060008061165a85611f39565b90925090506000198214156116d75760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610436565b8084106117265760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610436565b600080611734846001613340565b905060005b868110156117bd5761174b8883611fa8565b925060001983141561179f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b6117a98383613340565b9150806117b5816134d5565b915050611739565b506117c88782611fa8565b915060001982141561181c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b611827878284612017565b979650505050505050565b606060008260088151811061185757634e487b7160e01b600052603260045260246000fd5b0160200151835160f89190911c9150611871826009613358565b60ff161461188f575050604080516020810190915260008152919050565b826009815181106118b057634e487b7160e01b600052603260045260246000fd5b016020015160f81c6119645760028160ff1610156118de575050604080516020810190915260008152919050565b600083600a8151811061190157634e487b7160e01b600052603260045260246000fd5b016020015160f81c90506119166002836134b2565b60ff1681141580611934575080602014158015611934575080601414155b1561195057505060408051602081019091526000815292915050565b61195c84600b83612017565b949350505050565b6000611971846008611b60565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611a775783600b815181106119de57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c6014141580611a4e5750611a0960028551611a02919061349b565b8590611b60565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611a6a57505060408051602081019091526000815292915050565b61195c84600c6014612017565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b22578360018551611ad0919061349b565b81518110611aee57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c608714611b1557505060408051602081019091526000815292915050565b61195c84600b6014612017565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000611b6f8383016020015190565b9392505050565b6000815160001415611b8a57506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080611bc5836120e1565b60c01c9050600061195c8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000611c9b84611f39565b9092509050801580611cae575060001982145b15611cbd575060009392505050565b6000611cca836001613340565b905060005b82811015611d305785518210611ceb5750600095945050505050565b6000611cf787846120ed565b9050600019811415611d10575060009695505050505050565b611d1a8184613340565b9250508080611d28906134d5565b915050611ccf565b5093519093149392505050565b6000806000611d4b84611f39565b9092509050801580611d5e575060001982145b15611d6d575060009392505050565b6000611d7a836001613340565b905060005b82811015611d305785518210611d9b5750600095945050505050565b6000611da78784611fa8565b9050600019811415611dc0575060009695505050505050565b611dca8184613340565b9250508080611dd8906134d5565b915050611d7f565b611e79611e2d611df360408401846132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061213892505050565b611e3783806132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879493925050506020850135612145565b611eeb5760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e642074782068617368000000006064820152608401610436565b611f35611efb60408301836132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061217892505050565b5050565b600080611f47836000612516565b91509150915091565b60008080611f5e8585611b60565b9250611f93611f6d86866126a2565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611f9f85856120ed565b90509250925092565b6000611fb5826009613340565b83511015611fc6575060001961100a565b600080611fdd85611fd8866008613340565b612516565b9092509050600019821415611ff8576000199250505061100a565b80612004836009613340565b61200e9190613340565b95945050505050565b6060816120335750604080516020810190915260008152611b6f565b600061203f8385613340565b90508381118015612051575080855110155b61209d5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b604051915082604083010160405282825283850182038460208701018481015b808210156120d6578151838301526020820191506120bd565b505050509392505050565b600061100a8282611b60565b60008060006120fc85856126b9565b9092509050600019821415612117576000199250505061100a565b80612123836025613340565b61212d9190613340565b61200e906004613340565b604481015160009061100a565b60008385148015612154575081155b801561215f57508251155b1561216c5750600161195c565b61200e858486856126fb565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d457600080fd5b505afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190612d95565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561226957600080fd5b505afa15801561227d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a19190612d95565b905060006122b66122b1866127a3565b612846565b9050828114156122c857829350612346565b818114156122d857819350612346565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c74790000000000000000000000000000000000000000000000000000006064820152608401610436565b60006123518661286e565b90506000198114156123cb5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e00000000000000000000000000000000000000000000000000000000006064820152608401610436565b60011981141561241d5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e00000000000000000000006044820152606401610436565b60021981141561246f5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e2061206865616465720000006044820152606401610436565b6124997f00000000000000000000000000000000000000000000000000000000000000008661347c565b81101561250e5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e000000000000000000000000006064820152608401610436565b505050505050565b60008060006125258585612a75565b905060ff811661256557600085858151811061255157634e487b7160e01b600052603260045260246000fd5b016020015190935060f81c915061269b9050565b83612571826001613358565b60ff1661257e9190613340565b85511015612595576000196000925092505061269b565b60008160ff16600214156125da576125cf6125bb6125b4876001613340565b8890611b60565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612691565b8160ff1660041415612604576125f7611f6d6125b4876001613340565b63ffffffff169050612691565b8160ff1660081415612691576126846126216125b4876001613340565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000611b6f6126b2836020613340565b8490611b60565b6000806126c7836025613340565b845110156126dc57506000199050600061269b565b6000806126ee86611fd8876024613340565b9097909650945050505050565b60006020845161270b91906134f0565b156127185750600061195c565b83516127265750600061195c565b818560005b86518110156127965761273f6002846134f0565b600114156127645761275d6127578883016020015190565b83612b2b565b915061277d565b61277a826127758984016020015190565b612b2b565b91505b60019290921c9161278f602082613340565b905061272b565b5090931495945050505050565b6000806127b1836048611b60565b60e81c9050600083604b815181106127d957634e487b7160e01b600052603260045260246000fd5b016020015160f81c9050600061280d83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006128216003846134b2565b60ff169050612832816101006133d4565b61283c908361347c565b9695505050505050565b600061100a7bffff000000000000000000000000000000000000000000000000000083612b37565b60006050825161287e91906134f0565b1561288c5750600019919050565b506040805160808101909152605081526000908190815b8451811015612a6d576128b7858383612b43565b80156128d7576128c78284612be2565b6128d75750600119949350505050565b60006128e2836127a3565b90506128ed83611b92565b935080612a318560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115612a44575060021995945050505050565b612a57612a5082612846565b8690612c0b565b9450612a669050605082613340565b90506128a3565b505050919050565b6000828281518110612a9757634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60ff1415612ab05750600861100a565b828281518110612ad057634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fe1415612ae95750600461100a565b828281518110612b0957634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fd1415612b225750600261100a565b50600092915050565b6000611b6f8383612c69565b6000611b6f828461337d565b81516000612b518284613340565b90508281118015612b63575080855110155b612baf5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b826020860101602085018382015b80831015612bd8578251825260209283019290910190612bbd565b5050505050505050565b600080612bee84612c97565b9050828114612c0157600091505061100a565b5060019392505050565b6000612c178284613340565b90508281101561100a5760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e000000000000006044820152606401610436565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b602481015160009061100a565b80356001600160a01b0381168114612cbb57600080fd5b919050565b600060808284031215612cd1578081fd5b50919050565b600060608284031215612cd1578081fd5b803563ffffffff81168114612cbb57600080fd5b803567ffffffffffffffff81168114612cbb57600080fd5b600060208284031215612d25578081fd5b611b6f82612ca4565b60008060408385031215612d40578081fd5b612d4983612ca4565b915060208301358015158114612d5d578182fd5b809150509250929050565b600060208284031215612d79578081fd5b81356bffffffffffffffffffffffff1981168114611b6f578182fd5b600060208284031215612da6578081fd5b5051919050565b600060208284031215612dbe578081fd5b81356001600160e01b031981168114611b6f578182fd5b600060208284031215612de6578081fd5b81356001600160c01b031981168114611b6f578182fd5b600080600060a08486031215612e11578081fd5b833567ffffffffffffffff80821115612e28578283fd5b612e3487838801612cc0565b94506020860135915080821115612e49578283fd5b50612e5686828701612cd7565b925050611f9f8560408601612cd7565b600080828403610100811215612e7a578283fd5b833567ffffffffffffffff811115612e90578384fd5b612e9c86828701612cc0565b93505060e0601f1982011215612eb0578182fd5b506020830190509250929050565b600060608284031215612ecf578081fd5b6040516060810181811067ffffffffffffffff82111715612efe57634e487b7160e01b83526041600452602483fd5b60405282358152612f1160208401612ce8565b6020820152612f2260408401612cfc565b60408201529392505050565b600060208284031215612f3f578081fd5b5035919050565b600060208284031215612f57578081fd5b611b6f82612ce8565b600060208284031215612f71578081fd5b611b6f82612cfc565b60006001600160e01b031980891683528688600485013786830160048101838152868882375093169390920160048101939093525050600801949350505050565b60008251815b81811015612fdb5760208186018101518583015201612fc1565b81811115612fe95782828501525b509190910192915050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006130cd6130c0613097602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526131916130c061309761306e613168601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061326c6132436006830161313f565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156132ba5781516001600160a01b031684529284019290840190600101613295565b50505083810382850152845180825285830191830190845b818110156132ee578351835292840192918401916001016132d2565b5090979650505050505050565b6000808335601e19843603018112613311578283fd5b83018035915067ffffffffffffffff82111561332b578283fd5b60200191503681900382131561269b57600080fd5b6000821982111561335357613353613504565b500190565b600060ff821660ff84168060ff0382111561337557613375613504565b019392505050565b60008261338c5761338c61351a565b500490565b600181815b808511156133cc5781600019048211156133b2576133b2613504565b808516156133bf57918102915b93841c9390800290613396565b509250929050565b6000611b6f83836000826133ea5750600161100a565b816133f75750600061100a565b816001811461340d576002811461341757613433565b600191505061100a565b60ff84111561342857613428613504565b50506001821b61100a565b5060208310610133831016604e8410600b8410161715613456575081810a61100a565b6134608383613391565b806000190482111561347457613474613504565b029392505050565b600081600019048311821515161561349657613496613504565b500290565b6000828210156134ad576134ad613504565b500390565b600060ff821660ff8416808210156134cc576134cc613504565b90039392505050565b60006000198214156134e9576134e9613504565b5060010190565b6000826134ff576134ff61351a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220968673368bf3bb6d0d2fdb26d9f0a93fb62e71d055de028f220607039c5cbcdd64736f6c63430008040033",
470
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806383a4342811610081578063b59589d11161005b578063b59589d11461026a578063e53c0b5514610291578063f2fde38b146102c457600080fd5b806383a43428146101955780638da5cb5b146101b5578063b02c43d0146101c657600080fd5b806360d712fc116100b257806360d712fc1461013b578063715018a61461014e57806376cdb03b1461015657600080fd5b80632bb818c2146100d957806359a9d90a146101135780635c0b481214610128575b600080fd5b6101007f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610121366004612dfd565b6102d7565b005b610126610136366004612e66565b610665565b610126610149366004612d2e565b610c95565b610126610d4e565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010a565b6101006101a3366004612d68565b60036020526000908152604090205481565b6000546001600160a01b031661017d565b6102256101d4366004612f2e565b600260205260009081526040902080546001909101546001600160a01b0380831692600160a01b80820467ffffffffffffffff1693600160e01b90920463ffffffff90811693831692919091041685565b604080516001600160a01b03968716815267ffffffffffffffff909516602086015263ffffffff9384169085015293166060830152909116608082015260a00161010a565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6102b461029f366004612d14565b60016020526000908152604090205460ff1681565b604051901515815260200161010a565b6101266102d2366004612d14565b610db4565b60006102e38484610e96565b90506000806103326102f860408801886132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061101092505050565b60408051606081018252600080825260208083018290528284018290526bffffffffffffffffffffffff19861682526003905291909120549294509092509080156104515780863561038a6040890160208a01612f46565b61039a60608a0160408b01612f60565b6040516020016103d79392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b604051602081830303815290604052805190602001201461043f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b61044e36879003870187612ebe565b91505b600080806104a161046560208d018d6132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611143915050565b9194509250905060006104be67ffffffffffffffff88168561349b565b905060008251826104cf919061337d565b905060005b835181101561052757818482815181106104fe57634e487b7160e01b600052603260045260246000fd5b60200260200101818151610512919061349b565b9052508061051f816134d5565b9150506104d4565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f1901815282825280516020918201206bffffffffffffffffffffffff198d1660008181526003845284902091909155835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a16040517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266a123a906106249087908790600401613278565b600060405180830381600087803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061067760e0830160c08401612d14565b6001600160a01b031614806106b957506001600061069b60e0840160c08501612d14565b6001600160a01b0316815260208101919091526040016000205460ff165b6107055760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610436565b60006107176040830160208401612d14565b6107276060840160408501612dd5565b6107376080850160608601612d68565b61074760a0860160808701612d68565b61075760c0870160a08801612dad565b60405160200161076b959493929190612ff4565b60408051601f19818403018152919052905060006107df61078f6020850185612f46565b63ffffffff166107a260408701876132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061164c9050565b905060006107ec82611832565b905080516014141561087c5761080183611b39565b6bffffffffffffffffffffffff191661081b826000611b60565b6bffffffffffffffffffffffff1916146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610436565b610974565b80516020141561092c576002836040516108969190612fbb565b602060405180830381855afa1580156108b3573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906108d69190612d95565b6108df82611b76565b146108775760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610436565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610436565b60006109d96109866020880188612dad565b61099360208901896132fb565b6109a060408b018b6132fb565b6109b060808d0160608e01612dad565b6040516020016109c596959493929190612f7a565b604051602081830303815290604052611b92565b90506000600281836109ee60208a018a612f46565b604051602001610a1592919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610a995760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610436565b6000610aa485611bb9565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff8316021783559050610aee6040880160208901612d14565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255610b3d60e0880160c08901612d14565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583610b9b60208a018a612f46565b610bab60408b0160208c01612d14565b84610bbc60608d0160408e01612dd5565b610bcc60808e0160608f01612d68565b8d6080016020810190610bdf9190612d68565b8e60a0016020810190610bf29190612dad565b8f60c0016020810190610c059190612d14565b60408051998a5263ffffffff90981660208a01526001600160a01b039687169789019790975267ffffffffffffffff90941660608801526001600160c01b031990921660808701526bffffffffffffffffffffffff1990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314610cef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038216600081815260016020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b03163314610da85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b610db26000611c30565b565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610436565b6001600160a01b038116610e8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610436565b610e9381611c30565b50565b6000610ee2610ea860208501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8d92505050565b610f2e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f76696465640000006044820152606401610436565b610f78610f3e60408501856132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3d92505050565b610fc45760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f766964656400006044820152606401610436565b610ffe610fd46020850185612dad565b610fe160208601866132fb565b610fee60408801886132fb565b6109b060808a0160608b01612dad565b905061100a8183611de0565b92915050565b600080600061101e84611f39565b915050806001146110975760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610436565b60006110a3858261164c565b90506110ae81611bb9565b925060006110bb82611832565b905080516014146111345760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610436565b60208101519450505050915091565b80516000906060908190151583808061115b89611f39565b9092509050600061116d836001613340565b905084156111855761118060018361349b565b611187565b815b67ffffffffffffffff8111156111ad57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111d6578160200160208202803683370190505b509650865167ffffffffffffffff81111561120157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561122a578160200160208202803683370190505b5095506000805b8381101561154f578b5183106112465761154f565b60008060006112558f87611f50565b925092509250600060026000858560405160200161128a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff16156114a7576001810154600160a01b900463ffffffff16156113255760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610436565b8c5186141561139c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b6001810180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b4263ffffffff160217905580548d516001600160a01b03909116908e908890811061140457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03929092166020928302919091019091015280548c51600160a01b90910467ffffffffffffffff16908d908890811061145457634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508b868151811061148057634e487b7160e01b600052603260045260246000fd5b60200260200101518e6114939190613340565b9d508561149f816134d5565b96505061152c565b8915158b1515141580156114bb57508e5184145b156114e45760408f01516114d99067ffffffffffffffff168f613340565b9d506001995061152c565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610436565b6115368288613340565b9650505050508080611547906134d5565b915050611231565b50600081116115c65760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610436565b8415158615151461163f5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610436565b5050505050509250925092565b606060008061165a85611f39565b90925090506000198214156116d75760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610436565b8084106117265760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610436565b600080611734846001613340565b905060005b868110156117bd5761174b8883611fa8565b925060001983141561179f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b6117a98383613340565b9150806117b5816134d5565b915050611739565b506117c88782611fa8565b915060001982141561181c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610436565b611827878284612017565b979650505050505050565b606060008260088151811061185757634e487b7160e01b600052603260045260246000fd5b0160200151835160f89190911c9150611871826009613358565b60ff161461188f575050604080516020810190915260008152919050565b826009815181106118b057634e487b7160e01b600052603260045260246000fd5b016020015160f81c6119645760028160ff1610156118de575050604080516020810190915260008152919050565b600083600a8151811061190157634e487b7160e01b600052603260045260246000fd5b016020015160f81c90506119166002836134b2565b60ff1681141580611934575080602014158015611934575080601414155b1561195057505060408051602081019091526000815292915050565b61195c84600b83612017565b949350505050565b6000611971846008611b60565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611a775783600b815181106119de57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c6014141580611a4e5750611a0960028551611a02919061349b565b8590611b60565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611a6a57505060408051602081019091526000815292915050565b61195c84600c6014612017565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415611b22578360018551611ad0919061349b565b81518110611aee57634e487b7160e01b600052603260045260246000fd5b60209101015160f81c608714611b1557505060408051602081019091526000815292915050565b61195c84600b6014612017565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000611b6f8383016020015190565b9392505050565b6000815160001415611b8a57506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080611bc5836120e1565b60c01c9050600061195c8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000611c9b84611f39565b9092509050801580611cae575060001982145b15611cbd575060009392505050565b6000611cca836001613340565b905060005b82811015611d305785518210611ceb5750600095945050505050565b6000611cf787846120ed565b9050600019811415611d10575060009695505050505050565b611d1a8184613340565b9250508080611d28906134d5565b915050611ccf565b5093519093149392505050565b6000806000611d4b84611f39565b9092509050801580611d5e575060001982145b15611d6d575060009392505050565b6000611d7a836001613340565b905060005b82811015611d305785518210611d9b5750600095945050505050565b6000611da78784611fa8565b9050600019811415611dc0575060009695505050505050565b611dca8184613340565b9250508080611dd8906134d5565b915050611d7f565b611e79611e2d611df360408401846132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061213892505050565b611e3783806132fb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879493925050506020850135612145565b611eeb5760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e642074782068617368000000006064820152608401610436565b611f35611efb60408301836132fb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061217892505050565b5050565b600080611f47836000612516565b91509150915091565b60008080611f5e8585611b60565b9250611f93611f6d86866126a2565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b9150611f9f85856120ed565b90509250925092565b6000611fb5826009613340565b83511015611fc6575060001961100a565b600080611fdd85611fd8866008613340565b612516565b9092509050600019821415611ff8576000199250505061100a565b80612004836009613340565b61200e9190613340565b95945050505050565b6060816120335750604080516020810190915260008152611b6f565b600061203f8385613340565b90508381118015612051575080855110155b61209d5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b604051915082604083010160405282825283850182038460208701018481015b808210156120d6578151838301526020820191506120bd565b505050509392505050565b600061100a8282611b60565b60008060006120fc85856126b9565b9092509050600019821415612117576000199250505061100a565b80612123836025613340565b61212d9190613340565b61200e906004613340565b604481015160009061100a565b60008385148015612154575081155b801561215f57508251155b1561216c5750600161195c565b61200e858486856126fb565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d457600080fd5b505afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190612d95565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561226957600080fd5b505afa15801561227d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a19190612d95565b905060006122b66122b1866127a3565b612846565b9050828114156122c857829350612346565b818114156122d857819350612346565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c74790000000000000000000000000000000000000000000000000000006064820152608401610436565b60006123518661286e565b90506000198114156123cb5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e00000000000000000000000000000000000000000000000000000000006064820152608401610436565b60011981141561241d5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e00000000000000000000006044820152606401610436565b60021981141561246f5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e2061206865616465720000006044820152606401610436565b6124997f00000000000000000000000000000000000000000000000000000000000000008661347c565b81101561250e5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e000000000000000000000000006064820152608401610436565b505050505050565b60008060006125258585612a75565b905060ff811661256557600085858151811061255157634e487b7160e01b600052603260045260246000fd5b016020015190935060f81c915061269b9050565b83612571826001613358565b60ff1661257e9190613340565b85511015612595576000196000925092505061269b565b60008160ff16600214156125da576125cf6125bb6125b4876001613340565b8890611b60565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612691565b8160ff1660041415612604576125f7611f6d6125b4876001613340565b63ffffffff169050612691565b8160ff1660081415612691576126846126216125b4876001613340565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000611b6f6126b2836020613340565b8490611b60565b6000806126c7836025613340565b845110156126dc57506000199050600061269b565b6000806126ee86611fd8876024613340565b9097909650945050505050565b60006020845161270b91906134f0565b156127185750600061195c565b83516127265750600061195c565b818560005b86518110156127965761273f6002846134f0565b600114156127645761275d6127578883016020015190565b83612b2b565b915061277d565b61277a826127758984016020015190565b612b2b565b91505b60019290921c9161278f602082613340565b905061272b565b5090931495945050505050565b6000806127b1836048611b60565b60e81c9050600083604b815181106127d957634e487b7160e01b600052603260045260246000fd5b016020015160f81c9050600061280d83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006128216003846134b2565b60ff169050612832816101006133d4565b61283c908361347c565b9695505050505050565b600061100a7bffff000000000000000000000000000000000000000000000000000083612b37565b60006050825161287e91906134f0565b1561288c5750600019919050565b506040805160808101909152605081526000908190815b8451811015612a6d576128b7858383612b43565b80156128d7576128c78284612be2565b6128d75750600119949350505050565b60006128e2836127a3565b90506128ed83611b92565b935080612a318560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b1115612a44575060021995945050505050565b612a57612a5082612846565b8690612c0b565b9450612a669050605082613340565b90506128a3565b505050919050565b6000828281518110612a9757634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60ff1415612ab05750600861100a565b828281518110612ad057634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fe1415612ae95750600461100a565b828281518110612b0957634e487b7160e01b600052603260045260246000fd5b60209101015160f81c60fd1415612b225750600261100a565b50600092915050565b6000611b6f8383612c69565b6000611b6f828461337d565b81516000612b518284613340565b90508281118015612b63575080855110155b612baf5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610436565b826020860101602085018382015b80831015612bd8578251825260209283019290910190612bbd565b5050505050505050565b600080612bee84612c97565b9050828114612c0157600091505061100a565b5060019392505050565b6000612c178284613340565b90508281101561100a5760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e000000000000006044820152606401610436565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b602481015160009061100a565b80356001600160a01b0381168114612cbb57600080fd5b919050565b600060808284031215612cd1578081fd5b50919050565b600060608284031215612cd1578081fd5b803563ffffffff81168114612cbb57600080fd5b803567ffffffffffffffff81168114612cbb57600080fd5b600060208284031215612d25578081fd5b611b6f82612ca4565b60008060408385031215612d40578081fd5b612d4983612ca4565b915060208301358015158114612d5d578182fd5b809150509250929050565b600060208284031215612d79578081fd5b81356bffffffffffffffffffffffff1981168114611b6f578182fd5b600060208284031215612da6578081fd5b5051919050565b600060208284031215612dbe578081fd5b81356001600160e01b031981168114611b6f578182fd5b600060208284031215612de6578081fd5b81356001600160c01b031981168114611b6f578182fd5b600080600060a08486031215612e11578081fd5b833567ffffffffffffffff80821115612e28578283fd5b612e3487838801612cc0565b94506020860135915080821115612e49578283fd5b50612e5686828701612cd7565b925050611f9f8560408601612cd7565b600080828403610100811215612e7a578283fd5b833567ffffffffffffffff811115612e90578384fd5b612e9c86828701612cc0565b93505060e0601f1982011215612eb0578182fd5b506020830190509250929050565b600060608284031215612ecf578081fd5b6040516060810181811067ffffffffffffffff82111715612efe57634e487b7160e01b83526041600452602483fd5b60405282358152612f1160208401612ce8565b6020820152612f2260408401612cfc565b60408201529392505050565b600060208284031215612f3f578081fd5b5035919050565b600060208284031215612f57578081fd5b611b6f82612ce8565b600060208284031215612f71578081fd5b611b6f82612cfc565b60006001600160e01b031980891683528688600485013786830160048101838152868882375093169390920160048101939093525050600801949350505050565b60008251815b81811015612fdb5760208186018101518583015201612fc1565b81811115612fe95782828501525b509190910192915050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006130cd6130c0613097602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526131916130c061309761306e613168601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061326c6132436006830161313f565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156132ba5781516001600160a01b031684529284019290840190600101613295565b50505083810382850152845180825285830191830190845b818110156132ee578351835292840192918401916001016132d2565b5090979650505050505050565b6000808335601e19843603018112613311578283fd5b83018035915067ffffffffffffffff82111561332b578283fd5b60200191503681900382131561269b57600080fd5b6000821982111561335357613353613504565b500190565b600060ff821660ff84168060ff0382111561337557613375613504565b019392505050565b60008261338c5761338c61351a565b500490565b600181815b808511156133cc5781600019048211156133b2576133b2613504565b808516156133bf57918102915b93841c9390800290613396565b509250929050565b6000611b6f83836000826133ea5750600161100a565b816133f75750600061100a565b816001811461340d576002811461341757613433565b600191505061100a565b60ff84111561342857613428613504565b50506001821b61100a565b5060208310610133831016604e8410600b8410161715613456575081810a61100a565b6134608383613391565b806000190482111561347457613474613504565b029392505050565b600081600019048311821515161561349657613496613504565b500290565b6000828210156134ad576134ad613504565b500390565b600060ff821660ff8416808210156134cc576134cc613504565b90039392505050565b60006000198214156134e9576134e9613504565b5060010190565b6000826134ff576134ff61351a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220968673368bf3bb6d0d2fdb26d9f0a93fb62e71d055de028f220607039c5cbcdd64736f6c63430008040033",
832
+ "bytecode": "0x6101006040523480156200001257600080fd5b50604051620052da380380620052da83398101604081905262000035916200021c565b6200004033620001af565b6001600160a01b0384166200009c5760405162461bcd60e51b815260206004820152601b60248201527f42616e6b20616464726573732063616e6e6f74206265207a65726f000000000060448201526064015b60405180910390fd5b6001600160a01b0380851660a0528316620000fa5760405162461bcd60e51b815260206004820152601c60248201527f52656c617920616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000093565b6001600160a01b0380841660c0528216620001585760405162461bcd60e51b815260206004820152601f60248201527f547265617375727920616464726573732063616e6e6f74206265207a65726f00604482015260640162000093565b6001600160a01b039190911660e052608052505060008054600160a01b600160e01b031916613d0960a61b179055600180546001600160801b0319166903e800000000000186a01790556202a3006002556200026e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200021757600080fd5b919050565b600080600080608085870312156200023357600080fd5b6200023e85620001ff565b93506200024e60208601620001ff565b92506200025e60408601620001ff565b6060959095015193969295505050565b60805160a05160c05160e051614ffa620002e06000396000818161030f01526113c70152600081816104950152818161379f01526138340152600081816103560152818161087b0152818161132e015281816113ff0152611b5f0152600081816102ad0152613a960152614ffa6000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80638da5cb5b116100d8578063bdf9fca91161008c578063e65e19d511610066578063e65e19d514610517578063f2fde38b14610558578063f3cc53481461056b57600080fd5b8063bdf9fca9146104b7578063d6eccdf0146104d1578063e53c0b55146104e457600080fd5b8063b02c43d0116100bd578063b02c43d0146103db578063b34b32161461047d578063b59589d11461049057600080fd5b80638da5cb5b14610398578063a588f059146103a957600080fd5b80635c0b48121161013a578063715018a611610114578063715018a61461034957806376cdb03b1461035157806383a434281461037857600080fd5b80635c0b4812146102e457806360d712fc146102f757806361d027b31461030a57600080fd5b80631fff4e701161016b5780631fff4e70146102915780632bb818c2146102a857806359a9d90a146102cf57600080fd5b806303d952f7146101875780630b6ba19d14610232575b600080fd5b6101e6610195366004614445565b600660205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b6101e6610240366004614445565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b61029a60025481565b604051908152602001610229565b61029a7f000000000000000000000000000000000000000000000000000000000000000081565b6102e26102dd366004614488565b61057e565b005b6102e26102f23660046144f3565b6108f3565b6102e2610305366004614569565b610f12565b6103317f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610229565b6102e2610fcb565b6103317f000000000000000000000000000000000000000000000000000000000000000081565b61029a6103863660046145bd565b60056020526000908152604090205481565b6000546001600160a01b0316610331565b6001546103c390600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610229565b6104396103e9366004614445565b600460205260009081526040902080546001909101546001600160a01b0380831692600160a01b8082046001600160401b031693600160e01b90920463ffffffff90811693831692919091041685565b604080516001600160a01b0396871681526001600160401b03909516602086015263ffffffff9384169085015293166060830152909116608082015260a001610229565b6102e261048b3660046145d8565b611031565b6103317f000000000000000000000000000000000000000000000000000000000000000081565b6000546103c390600160a01b90046001600160401b031681565b6102e26104df366004614674565b611466565b6105076104f2366004614719565b60036020526000908152604090205460ff1681565b6040519015158152602001610229565b61054a6105253660046145bd565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b60405161022992919061474a565b6102e2610566366004614719565b611bcf565b6001546103c3906001600160401b031681565b600061058a8484611cb1565b90506000806105d961059f6040880188614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e2b92505050565b60408051606081018252600080825260208083018290528284018290526001600160601b0319861682526005905291909120549294509092509080156106f35780863561062c6040890160208a016147de565b61063c60608a0160408b016147f9565b6040516020016106799392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146106e15760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b6106f03687900387018761482a565b91505b6000808061074361070760208d018d614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611f5e915050565b91945092509050600061075f6001600160401b038816856148b2565b9050600082518261077091906148df565b905060005b83518110156107ba5781848281518110610791576107916148f3565b602002602001018181516107a591906148b2565b905250806107b281614909565b915050610775565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f1901815282825280516020918201206001600160601b03198d1660008181526005845284902091909155835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a16040517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266a123a906108b29087908790600401614924565b600060405180830381600087803b1580156108cc57600080fd5b505af11580156108e0573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061090560e0830160c08401614719565b6001600160a01b0316148061094757506003600061092960e0840160c08501614719565b6001600160a01b0316815260208101919091526040016000205460ff165b6109935760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f74207472757374656400000000000000000000000060448201526064016106d8565b60006109a56040830160208401614719565b6109b560608401604085016149a8565b6109c560808501606086016145bd565b6109d560a08601608087016145bd565b6109e560c0870160a088016149d2565b6040516020016109f99594939291906149fc565b60408051601f1981840301815291905290506000610a6d610a1d60208501856147de565b63ffffffff16610a306040870187614784565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506124109050565b90506000610a7a826125db565b9050805160141415610b0057610a8f83612881565b6001600160601b031916610aa48260006128a8565b6001600160601b03191614610afb5760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d627974652073637269707420686173680000000000000060448201526064016106d8565b610bf8565b805160201415610bb057600283604051610b1a9190614cac565b602060405180830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b5a9190614cb8565b610b63826128be565b14610afb5760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d627974652073637269707420686173680000000000000060448201526064016106d8565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e677468000000000000000060448201526064016106d8565b6000610c5d610c0a60208801886149d2565b610c176020890189614784565b610c2460408b018b614784565b610c3460808d0160608e016149d2565b604051602001610c4996959493929190614cd1565b6040516020818303038152906040526128da565b9050600060048183610c7260208a018a6147de565b604051602001610c9992919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610d1d5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064016106d8565b6000610d2885612901565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b038316021783559050610d716040880160208901614719565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255610dc060e0880160c08901614719565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583610e1e60208a018a6147de565b610e2e60408b0160208c01614719565b84610e3f60608d0160408e016149a8565b610e4f60808e0160608f016145bd565b8d6080016020810190610e6291906145bd565b8e60a0016020810190610e7591906149d2565b8f60c0016020810190610e889190614719565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314610f6c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b031633146110255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b61102f6000612977565b565b600061103d8585611cb1565b905061108d61104f6020870187614784565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792508691506129d49050565b6001600160601b0319821660009081526008602052604090205460ff1660018160048111156110be576110be614734565b14806110db575060028160048111156110d9576110d9614734565b145b61114d5760405162461bcd60e51b815260206004820152602c60248201527f57616c6c6574206d75737420626520696e20416374697665206f72204d6f766960448201527f6e6746756473207374617465000000000000000000000000000000000000000060648201526084016106d8565b600061119b61115f6040890189614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250612bd9915050565b60608101519091506001600160401b03161561122e5782816040015182606001516040516020016111f99392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291815281516020928301206001600160601b0319871660009081526005909352912055611249565b6001600160601b031984166000908152600560205260408120555b80516001600160601b031985166000908152600860205260409020805460019061128290849061010090046001600160401b0316614d13565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe84846040516112ec9291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b15801561137a57600080fd5b505af115801561138e573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050505050505050505050565b60016001600160601b0319861660009081526008602052604090205460ff16600481111561149657611496614734565b146114e35760405162461bcd60e51b815260206004820152601e60248201527f57616c6c6574206d75737420626520696e20416374697665207374617465000060448201526064016106d8565b6001600160601b03198516600090815260056020526040902054806115705760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f740000000000000000000000000000000000000000000000000000000000000060648201526084016106d8565b80853561158360408801602089016147de565b6115936060890160408a016147f9565b6040516020016115d09392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146116335760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016106d8565b6000611665600060c01b868660405160200161165193929190614d3b565b6040516020818303038152906040526125db565b905060008151116116de5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016106d8565b80805190602001208760405160200161170791906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156117915760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016106d8565b6000546001600160401b03600160a01b909104811690841610156117f75760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016106d8565b600087868660405160200161180e93929190614d5f565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff16156118df5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016106d8565b6001546001600160401b0380821691600160401b9004166119008287614d13565b6001600160601b03198b166000908152600860205260409020805460019061193790849061010090046001600160401b0316614d83565b82546001600160401b0391821661010093840a90810290830219909116179092556001600160601b03198d16600090815260086020526040908190205491909104909116915061198d9060608c01908c016147f9565b6001600160401b031610156119e45760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016106d8565b6040805160a081018252338082526001600160401b03808a1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526006909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591611b14918d918c918c91908c9089908990614dae565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03871660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b158015611bab57600080fd5b505af1158015611bbf573d6000803e3d6000fd5b5050505050505050505050505050565b6000546001600160a01b03163314611c295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b6001600160a01b038116611ca55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d8565b611cae81612977565b50565b6000611cfd611cc36020850185614784565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131fa92505050565b611d495760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016106d8565b611d93611d596040850185614784565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132aa92505050565b611ddf5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016106d8565b611e19611def60208501856149d2565b611dfc6020860186614784565b611e096040880188614784565b610c3460808a0160608b016149d2565b9050611e25818361334d565b92915050565b6000806000611e39846134a6565b91505080600114611eb25760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016106d8565b6000611ebe8582612410565b9050611ec981612901565b92506000611ed6826125db565b90508051601414611f4f5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016106d8565b60208101519450505050915091565b805160009060609081901515838080611f76896134a6565b90925090506000611f88836001614e25565b90508415611fa057611f9b6001836148b2565b611fa2565b815b6001600160401b03811115611fb957611fb9614814565b604051908082528060200260200182016040528015611fe2578160200160208202803683370190505b50965086516001600160401b03811115611ffe57611ffe614814565b604051908082528060200260200182016040528015612027578160200160208202803683370190505b5095506000805b838110156123135760008060006120458f876134bd565b925092509250600060046000858560405160200161207a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff161561226c576001810154600160a01b900463ffffffff16156121155760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016106d8565b8c5186141561218c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016106d8565b6001810180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b4263ffffffff160217905580548d516001600160a01b03909116908e90889081106121e6576121e66148f3565b6001600160a01b03929092166020928302919091019091015280548c51600160a01b9091046001600160401b0316908d9088908110612227576122276148f3565b6020026020010181815250508b8681518110612245576122456148f3565b60200260200101518e6122589190614e25565b9d508561226481614909565b9650506122f0565b8915158b15151415801561228057508e5184145b156122a85760408f015161229d906001600160401b03168f614e25565b9d50600199506122f0565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016106d8565b6122fa8288614e25565b965050505050808061230b90614909565b91505061202e565b506000811161238a5760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016106d8565b841515861515146124035760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016106d8565b5050505050509250925092565b606060008061241e856134a6565b90925090506000198214156124805760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016106d8565b8084106124cf5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016106d8565b6000806124dd846001614e25565b905060005b86811015612566576124f48883613515565b92506000198314156125485760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016106d8565b6125528383614e25565b91508061255e81614909565b9150506124e2565b506125718782613515565b91506000198214156125c55760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016106d8565b6125d0878284613584565b979650505050505050565b60606000826008815181106125f2576125f26148f3565b0160200151835160f89190911c915061260c826009614e3d565b60ff161461262a575050604080516020810190915260008152919050565b8260098151811061263d5761263d6148f3565b016020015160f81c6126e35760028160ff16101561266b575050604080516020810190915260008152919050565b600083600a81518110612680576126806148f3565b016020015160f81c9050612695600283614e62565b60ff16811415806126b35750806020141580156126b3575080601414155b156126cf57505060408051602081019091526000815292915050565b6126db84600b83613584565b949350505050565b60006126f08460086128a8565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156127cd5783600b8151811061274f5761274f6148f3565b60209101015160f81c60141415806127a4575061277a6002855161277391906148b2565b85906128a8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b156127c057505060408051602081019091526000815292915050565b6126db84600c6014613584565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000008216141561286a57836001855161282691906148b2565b81518110612836576128366148f3565b60209101015160f81c60871461285d57505060408051602081019091526000815292915050565b6126db84600b6014613584565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b60006128b78383016020015190565b9392505050565b60008151600014156128d257506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60008061290d8361364e565b60c01c905060006126db8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526005602052604090205480612a3b5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016106d8565b808335612a4e60408601602087016147de565b612a5e60608701604088016147f9565b604051602001612a9b9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014612afe5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016106d8565b600080612b0a8661365a565b9092509050843582148015612b39575063ffffffff8116612b3160408701602088016147de565b63ffffffff16145b612bd15760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a4016106d8565b505050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080612c07856134a6565b90925090506000612c19836001614e25565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b85811015613177576000612cdb8b87613515565b90506000612cea8c8884613584565b90506000612cf782612901565b90506000612d156008808551612d0d91906148b2565b859190613584565b90508b606001516001600160401b03166000148015612d48575080516020820120881480612d4857508051602082012087145b8015612d5d57506000826001600160401b0316115b15612d825763ffffffff851660408d01526001600160401b03821660608d0152613154565b60008d82604051602001612d97929190614e85565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff1615612fa157600081815260066020526040812060018101548154919291612e09916001600160401b0390811691600160a01b900416614d13565b60018301549091506001600160401b0380871691612e3091600160401b9091041683614d13565b6001600160401b031611158015612e595750806001600160401b0316856001600160401b031611155b612ef15760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016106d8565b808f600001818151612f039190614d83565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f602001818151612f479190614d83565b6001600160401b0316905250600083815260066020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff1916905588612f9781614909565b9950505050613152565b60008181526007602052604090206001810154600160801b900463ffffffff166130325760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016106d8565b6001810154815460009161305a916001600160401b0391821691600160a01b90910416614d13565b60018301549091506001600160401b038087169161308191600160401b9091041683614d13565b6001600160401b0316111580156130aa5750806001600160401b0316856001600160401b031611155b6131425760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016106d8565b8861314c81614909565b99505050505b505b61315e848a614e25565b985050505050808061316f90614909565b915050612cc7565b50600081116131ee5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016106d8565b50505050505092915050565b6000806000613208846134a6565b909250905080158061321b575060001982145b1561322a575060009392505050565b6000613237836001614e25565b905060005b8281101561329d57855182106132585750600095945050505050565b6000613264878461370f565b905060001981141561327d575060009695505050505050565b6132878184614e25565b925050808061329590614909565b91505061323c565b5093519093149392505050565b60008060006132b8846134a6565b90925090508015806132cb575060001982145b156132da575060009392505050565b60006132e7836001614e25565b905060005b8281101561329d57855182106133085750600095945050505050565b60006133148784613515565b905060001981141561332d575060009695505050505050565b6133378184614e25565b925050808061334590614909565b9150506132ec565b6133e661339a6133606040840184614784565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061375a92505050565b6133a48380614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879493925050506020850135613767565b6134585760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016106d8565b6134a26134686040830183614784565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061379a92505050565b5050565b6000806134b4836000613b30565b91509150915091565b600080806134cb85856128a8565b92506135006134da8686613cac565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b915061350c858561370f565b90509250925092565b6000613522826009614e25565b835110156135335750600019611e25565b60008061354a85613545866008614e25565b613b30565b90925090506000198214156135655760001992505050611e25565b80613571836009614e25565b61357b9190614e25565b95945050505050565b6060816135a057506040805160208101909152600081526128b7565b60006135ac8385614e25565b905083811180156135be575080855110155b61360a5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016106d8565b604051915082604083010160405282825283850182038460208701018481015b808210156136435781518383015260208201915061362a565b505050509392505050565b6000611e2582826128a8565b6000806000613668846134a6565b915050806001146136e15760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e707574000000000000000000000000000000000060648201526084016106d8565b60006136ed8582613cc3565b90506136f881613e78565b93506137066134da82613e85565b92505050915091565b600080600061371e8585613e92565b90925090506000198214156137395760001992505050611e25565b80613745836025614e25565b61374f9190614e25565b61357b906004614e25565b6044810151600090611e25565b60008385148015613776575081155b801561378157508251155b1561378e575060016126db565b61357b85848685613ed4565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b1580156137f657600080fd5b505afa15801561380a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382e9190614cb8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561388b57600080fd5b505afa15801561389f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c39190614cb8565b905060006138d86138d386613f7c565b614011565b9050828114156138ea57829350613968565b818114156138fa57819350613968565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016106d8565b600061397386614039565b90506000198114156139ed5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016106d8565b600119811415613a3f5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016106d8565b600219811415613a915760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016106d8565b613abb7f000000000000000000000000000000000000000000000000000000000000000086614ea1565b811015612bd15760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016106d8565b6000806000613b3f8585614240565b905060ff8116613b71576000858581518110613b5d57613b5d6148f3565b016020015190935060f81c9150613ca59050565b83613b7d826001614e3d565b60ff16613b8a9190614e25565b85511015613ba15760001960009250925050613ca5565b60008160ff1660021415613be657613bdb613bc7613bc0876001614e25565b88906128a8565b62ffff0060e882901c1660f89190911c1790565b61ffff169050613c9b565b8160ff1660041415613c1057613c036134da613bc0876001614e25565b63ffffffff169050613c9b565b8160ff1660081415613c9b57613c8f613c2d613bc0876001614e25565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b60006128b7613cbc836020614e25565b84906128a8565b6060600080613cd1856134a6565b9092509050600019821415613d335760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016106d8565b808410613d825760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016106d8565b600080613d90846001614e25565b905060005b86811015613e1957613da7888361370f565b9250600019831415613dfb5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016106d8565b613e058383614e25565b915080613e1181614909565b915050613d95565b50613e24878261370f565b91506000198214156125c55760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016106d8565b6020810151600090611e25565b6000611e258260206128a8565b600080613ea0836025614e25565b84511015613eb5575060001990506000613ca5565b600080613ec786613545876024614e25565b9097909650945050505050565b600060208451613ee49190614ec0565b15613ef1575060006126db565b8351613eff575060006126db565b818560005b8651811015613f6f57613f18600284614ec0565b60011415613f3d57613f36613f308883016020015190565b836142cc565b9150613f56565b613f5382613f4e8984016020015190565b6142cc565b91505b60019290921c91613f68602082614e25565b9050613f04565b5090931495945050505050565b600080613f8a8360486128a8565b60e81c9050600083604b81518110613fa457613fa46148f3565b016020015160f81c90506000613fd883600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff1690506000613fec600384614e62565b60ff169050613ffd81610100614fb8565b6140079083614ea1565b9695505050505050565b6000611e257bffff0000000000000000000000000000000000000000000000000000836142d8565b6000605082516140499190614ec0565b156140575750600019919050565b506040805160808101909152605081526000908190815b8451811015614238576140828583836142e4565b80156140a2576140928284614383565b6140a25750600119949350505050565b60006140ad83613f7c565b90506140b8836128da565b9350806141fc8560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b111561420f575060021995945050505050565b61422261421b82614011565b86906143ac565b94506142319050605082614e25565b905061406e565b505050919050565b6000828281518110614254576142546148f3565b60209101015160f81c60ff141561426d57506008611e25565b82828151811061427f5761427f6148f3565b60209101015160f81c60fe141561429857506004611e25565b8282815181106142aa576142aa6148f3565b60209101015160f81c60fd14156142c357506002611e25565b50600092915050565b60006128b7838361440a565b60006128b782846148df565b815160006142f28284614e25565b90508281118015614304575080855110155b6143505760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016106d8565b826020860101602085018382015b8083101561437957825182526020928301929091019061435e565b5050505050505050565b60008061438f84614438565b90508281146143a2576000915050611e25565b5060019392505050565b60006143b88284614e25565b905082811015611e255760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016106d8565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611e25565b60006020828403121561445757600080fd5b5035919050565b60006080828403121561447057600080fd5b50919050565b60006060828403121561447057600080fd5b600080600060a0848603121561449d57600080fd5b83356001600160401b03808211156144b457600080fd5b6144c08783880161445e565b945060208601359150808211156144d657600080fd5b506144e386828701614476565b92505061350c8560408601614476565b60008082840361010081121561450857600080fd5b83356001600160401b0381111561451e57600080fd5b61452a8682870161445e565b93505060e0601f198201121561453f57600080fd5b506020830190509250929050565b80356001600160a01b038116811461456457600080fd5b919050565b6000806040838503121561457c57600080fd5b6145858361454d565b91506020830135801515811461459a57600080fd5b809150509250929050565b80356001600160601b03198116811461456457600080fd5b6000602082840312156145cf57600080fd5b6128b7826145a5565b60008060008060c085870312156145ee57600080fd5b84356001600160401b038082111561460557600080fd5b6146118883890161445e565b9550602087013591508082111561462757600080fd5b5061463487828801614476565b9350506146448660408701614476565b915061465260a086016145a5565b905092959194509250565b80356001600160401b038116811461456457600080fd5b600080600080600060c0868803121561468c57600080fd5b614695866145a5565b94506146a48760208801614476565b935060808601356001600160401b03808211156146c057600080fd5b818801915088601f8301126146d457600080fd5b8135818111156146e357600080fd5b8960208285010111156146f557600080fd5b60208301955080945050505061470d60a0870161465d565b90509295509295909350565b60006020828403121561472b57600080fd5b6128b78261454d565b634e487b7160e01b600052602160045260246000fd5b604081016005841061476c57634e487b7160e01b600052602160045260246000fd5b9281526001600160401b039190911660209091015290565b6000808335601e1984360301811261479b57600080fd5b8301803591506001600160401b038211156147b557600080fd5b602001915036819003821315613ca557600080fd5b803563ffffffff8116811461456457600080fd5b6000602082840312156147f057600080fd5b6128b7826147ca565b60006020828403121561480b57600080fd5b6128b78261465d565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561483c57600080fd5b604051606081018181106001600160401b038211171561486c57634e487b7160e01b600052604160045260246000fd5b6040528235815261487f602084016147ca565b60208201526148906040840161465d565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156148c4576148c461489c565b500390565b634e487b7160e01b600052601260045260246000fd5b6000826148ee576148ee6148c9565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141561491d5761491d61489c565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156149665781516001600160a01b031684529284019290840190600101614941565b5050508381038285015284518082528583019183019060005b8181101561499b5783518352928401929184019160010161497f565b5090979650505050505050565b6000602082840312156149ba57600080fd5b81356001600160c01b0319811681146128b757600080fd5b6000602082840312156149e457600080fd5b81356001600160e01b0319811681146128b757600080fd5b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f8201526000614ad0614ac3614a9a602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f63000000000000000000000000000000000000000000000000000000000000006015820152614b8f614ac3614a9a614a71614b66601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b60058201529050614c65614c3c60068301614b3d565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b81811015614c925760208185018101518683015201614c78565b81811115614ca1576000828601525b509290920192915050565b60006128b78284614c71565b600060208284031215614cca57600080fd5b5051919050565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b60006001600160401b0383811690831681811015614d3357614d3361489c565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b03808316818516808303821115614da557614da561489c565b01949350505050565b6bffffffffffffffffffffffff198816815260c060208201528560c0820152858760e0830137600060e08783018101919091526001600160a01b039590951660408201526001600160401b039384166060820152918316608083015290911660a0820152601f909201601f19169091010192915050565b60008219821115614e3857614e3861489c565b500190565b600060ff821660ff84168060ff03821115614e5a57614e5a61489c565b019392505050565b600060ff821660ff841680821015614e7c57614e7c61489c565b90039392505050565b6001600160601b03198316815260006126db6014830184614c71565b6000816000190483118215151615614ebb57614ebb61489c565b500290565b600082614ecf57614ecf6148c9565b500690565b600181815b80851115614f0f578160001904821115614ef557614ef561489c565b80851615614f0257918102915b93841c9390800290614ed9565b509250929050565b600082614f2657506001611e25565b81614f3357506000611e25565b8160018114614f495760028114614f5357614f6f565b6001915050611e25565b60ff841115614f6457614f6461489c565b50506001821b611e25565b5060208310610133831016604e8410600b8410161715614f92575081810a611e25565b614f9c8383614ed4565b8060001904821115614fb057614fb061489c565b029392505050565b60006128b78383614f1756fea2646970667358221220fbeb226bb6c3042ac1dff331dba4a7e03ab2989029a5ecf8abe0dbdb1bc5aef164736f6c63430008090033",
833
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101825760003560e01c80638da5cb5b116100d8578063bdf9fca91161008c578063e65e19d511610066578063e65e19d514610517578063f2fde38b14610558578063f3cc53481461056b57600080fd5b8063bdf9fca9146104b7578063d6eccdf0146104d1578063e53c0b55146104e457600080fd5b8063b02c43d0116100bd578063b02c43d0146103db578063b34b32161461047d578063b59589d11461049057600080fd5b80638da5cb5b14610398578063a588f059146103a957600080fd5b80635c0b48121161013a578063715018a611610114578063715018a61461034957806376cdb03b1461035157806383a434281461037857600080fd5b80635c0b4812146102e457806360d712fc146102f757806361d027b31461030a57600080fd5b80631fff4e701161016b5780631fff4e70146102915780632bb818c2146102a857806359a9d90a146102cf57600080fd5b806303d952f7146101875780630b6ba19d14610232575b600080fd5b6101e6610195366004614445565b600660205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b6101e6610240366004614445565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b61029a60025481565b604051908152602001610229565b61029a7f000000000000000000000000000000000000000000000000000000000000000081565b6102e26102dd366004614488565b61057e565b005b6102e26102f23660046144f3565b6108f3565b6102e2610305366004614569565b610f12565b6103317f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610229565b6102e2610fcb565b6103317f000000000000000000000000000000000000000000000000000000000000000081565b61029a6103863660046145bd565b60056020526000908152604090205481565b6000546001600160a01b0316610331565b6001546103c390600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610229565b6104396103e9366004614445565b600460205260009081526040902080546001909101546001600160a01b0380831692600160a01b8082046001600160401b031693600160e01b90920463ffffffff90811693831692919091041685565b604080516001600160a01b0396871681526001600160401b03909516602086015263ffffffff9384169085015293166060830152909116608082015260a001610229565b6102e261048b3660046145d8565b611031565b6103317f000000000000000000000000000000000000000000000000000000000000000081565b6000546103c390600160a01b90046001600160401b031681565b6102e26104df366004614674565b611466565b6105076104f2366004614719565b60036020526000908152604090205460ff1681565b6040519015158152602001610229565b61054a6105253660046145bd565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b60405161022992919061474a565b6102e2610566366004614719565b611bcf565b6001546103c3906001600160401b031681565b600061058a8484611cb1565b90506000806105d961059f6040880188614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e2b92505050565b60408051606081018252600080825260208083018290528284018290526001600160601b0319861682526005905291909120549294509092509080156106f35780863561062c6040890160208a016147de565b61063c60608a0160408b016147f9565b6040516020016106799392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146106e15760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b6106f03687900387018761482a565b91505b6000808061074361070760208d018d614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611f5e915050565b91945092509050600061075f6001600160401b038816856148b2565b9050600082518261077091906148df565b905060005b83518110156107ba5781848281518110610791576107916148f3565b602002602001018181516107a591906148b2565b905250806107b281614909565b915050610775565b5060408051602081018c90526000918101919091526001600160c01b031960c08a901b166044820152604c0160408051808303601f1901815282825280516020918201206001600160601b03198d1660008181526005845284902091909155835282018c90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a16040517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063266a123a906108b29087908790600401614924565b600060405180830381600087803b1580156108cc57600080fd5b505af11580156108e0573d6000803e3d6000fd5b5050505050505050505050505050505050565b600061090560e0830160c08401614719565b6001600160a01b0316148061094757506003600061092960e0840160c08501614719565b6001600160a01b0316815260208101919091526040016000205460ff165b6109935760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f74207472757374656400000000000000000000000060448201526064016106d8565b60006109a56040830160208401614719565b6109b560608401604085016149a8565b6109c560808501606086016145bd565b6109d560a08601608087016145bd565b6109e560c0870160a088016149d2565b6040516020016109f99594939291906149fc565b60408051601f1981840301815291905290506000610a6d610a1d60208501856147de565b63ffffffff16610a306040870187614784565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506124109050565b90506000610a7a826125db565b9050805160141415610b0057610a8f83612881565b6001600160601b031916610aa48260006128a8565b6001600160601b03191614610afb5760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d627974652073637269707420686173680000000000000060448201526064016106d8565b610bf8565b805160201415610bb057600283604051610b1a9190614cac565b602060405180830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b5a9190614cb8565b610b63826128be565b14610afb5760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d627974652073637269707420686173680000000000000060448201526064016106d8565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e677468000000000000000060448201526064016106d8565b6000610c5d610c0a60208801886149d2565b610c176020890189614784565b610c2460408b018b614784565b610c3460808d0160608e016149d2565b604051602001610c4996959493929190614cd1565b6040516020818303038152906040526128da565b9050600060048183610c7260208a018a6147de565b604051602001610c9992919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610d1d5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064016106d8565b6000610d2885612901565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b038316021783559050610d716040880160208901614719565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255610dc060e0880160c08901614719565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583610e1e60208a018a6147de565b610e2e60408b0160208c01614719565b84610e3f60608d0160408e016149a8565b610e4f60808e0160608f016145bd565b8d6080016020810190610e6291906145bd565b8e60a0016020810190610e7591906149d2565b8f60c0016020810190610e889190614719565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314610f6c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b031633146110255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b61102f6000612977565b565b600061103d8585611cb1565b905061108d61104f6020870187614784565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792508691506129d49050565b6001600160601b0319821660009081526008602052604090205460ff1660018160048111156110be576110be614734565b14806110db575060028160048111156110d9576110d9614734565b145b61114d5760405162461bcd60e51b815260206004820152602c60248201527f57616c6c6574206d75737420626520696e20416374697665206f72204d6f766960448201527f6e6746756473207374617465000000000000000000000000000000000000000060648201526084016106d8565b600061119b61115f6040890189614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250612bd9915050565b60608101519091506001600160401b03161561122e5782816040015182606001516040516020016111f99392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291815281516020928301206001600160601b0319871660009081526005909352912055611249565b6001600160601b031984166000908152600560205260408120555b80516001600160601b031985166000908152600860205260409020805460019061128290849061010090046001600160401b0316614d13565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe84846040516112ec9291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b15801561137a57600080fd5b505af115801561138e573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050505050505050505050565b60016001600160601b0319861660009081526008602052604090205460ff16600481111561149657611496614734565b146114e35760405162461bcd60e51b815260206004820152601e60248201527f57616c6c6574206d75737420626520696e20416374697665207374617465000060448201526064016106d8565b6001600160601b03198516600090815260056020526040902054806115705760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f740000000000000000000000000000000000000000000000000000000000000060648201526084016106d8565b80853561158360408801602089016147de565b6115936060890160408a016147f9565b6040516020016115d09392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146116335760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016106d8565b6000611665600060c01b868660405160200161165193929190614d3b565b6040516020818303038152906040526125db565b905060008151116116de5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016106d8565b80805190602001208760405160200161170791906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156117915760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016106d8565b6000546001600160401b03600160a01b909104811690841610156117f75760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016106d8565b600087868660405160200161180e93929190614d5f565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff16156118df5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016106d8565b6001546001600160401b0380821691600160401b9004166119008287614d13565b6001600160601b03198b166000908152600860205260409020805460019061193790849061010090046001600160401b0316614d83565b82546001600160401b0391821661010093840a90810290830219909116179092556001600160601b03198d16600090815260086020526040908190205491909104909116915061198d9060608c01908c016147f9565b6001600160401b031610156119e45760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016106d8565b6040805160a081018252338082526001600160401b03808a1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526006909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591611b14918d918c918c91908c9089908990614dae565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03871660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b158015611bab57600080fd5b505af1158015611bbf573d6000803e3d6000fd5b5050505050505050505050505050565b6000546001600160a01b03163314611c295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b6001600160a01b038116611ca55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d8565b611cae81612977565b50565b6000611cfd611cc36020850185614784565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131fa92505050565b611d495760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016106d8565b611d93611d596040850185614784565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132aa92505050565b611ddf5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016106d8565b611e19611def60208501856149d2565b611dfc6020860186614784565b611e096040880188614784565b610c3460808a0160608b016149d2565b9050611e25818361334d565b92915050565b6000806000611e39846134a6565b91505080600114611eb25760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016106d8565b6000611ebe8582612410565b9050611ec981612901565b92506000611ed6826125db565b90508051601414611f4f5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016106d8565b60208101519450505050915091565b805160009060609081901515838080611f76896134a6565b90925090506000611f88836001614e25565b90508415611fa057611f9b6001836148b2565b611fa2565b815b6001600160401b03811115611fb957611fb9614814565b604051908082528060200260200182016040528015611fe2578160200160208202803683370190505b50965086516001600160401b03811115611ffe57611ffe614814565b604051908082528060200260200182016040528015612027578160200160208202803683370190505b5095506000805b838110156123135760008060006120458f876134bd565b925092509250600060046000858560405160200161207a92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff161561226c576001810154600160a01b900463ffffffff16156121155760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016106d8565b8c5186141561218c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016106d8565b6001810180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b4263ffffffff160217905580548d516001600160a01b03909116908e90889081106121e6576121e66148f3565b6001600160a01b03929092166020928302919091019091015280548c51600160a01b9091046001600160401b0316908d9088908110612227576122276148f3565b6020026020010181815250508b8681518110612245576122456148f3565b60200260200101518e6122589190614e25565b9d508561226481614909565b9650506122f0565b8915158b15151415801561228057508e5184145b156122a85760408f015161229d906001600160401b03168f614e25565b9d50600199506122f0565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016106d8565b6122fa8288614e25565b965050505050808061230b90614909565b91505061202e565b506000811161238a5760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016106d8565b841515861515146124035760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016106d8565b5050505050509250925092565b606060008061241e856134a6565b90925090506000198214156124805760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016106d8565b8084106124cf5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016106d8565b6000806124dd846001614e25565b905060005b86811015612566576124f48883613515565b92506000198314156125485760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016106d8565b6125528383614e25565b91508061255e81614909565b9150506124e2565b506125718782613515565b91506000198214156125c55760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016106d8565b6125d0878284613584565b979650505050505050565b60606000826008815181106125f2576125f26148f3565b0160200151835160f89190911c915061260c826009614e3d565b60ff161461262a575050604080516020810190915260008152919050565b8260098151811061263d5761263d6148f3565b016020015160f81c6126e35760028160ff16101561266b575050604080516020810190915260008152919050565b600083600a81518110612680576126806148f3565b016020015160f81c9050612695600283614e62565b60ff16811415806126b35750806020141580156126b3575080601414155b156126cf57505060408051602081019091526000815292915050565b6126db84600b83613584565b949350505050565b60006126f08460086128a8565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156127cd5783600b8151811061274f5761274f6148f3565b60209101015160f81c60141415806127a4575061277a6002855161277391906148b2565b85906128a8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b156127c057505060408051602081019091526000815292915050565b6126db84600c6014613584565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000008216141561286a57836001855161282691906148b2565b81518110612836576128366148f3565b60209101015160f81c60871461285d57505060408051602081019091526000815292915050565b6126db84600b6014613584565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b60006128b78383016020015190565b9392505050565b60008151600014156128d257506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60008061290d8361364e565b60c01c905060006126db8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526005602052604090205480612a3b5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016106d8565b808335612a4e60408601602087016147de565b612a5e60608701604088016147f9565b604051602001612a9b9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014612afe5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016106d8565b600080612b0a8661365a565b9092509050843582148015612b39575063ffffffff8116612b3160408701602088016147de565b63ffffffff16145b612bd15760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a4016106d8565b505050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080612c07856134a6565b90925090506000612c19836001614e25565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b85811015613177576000612cdb8b87613515565b90506000612cea8c8884613584565b90506000612cf782612901565b90506000612d156008808551612d0d91906148b2565b859190613584565b90508b606001516001600160401b03166000148015612d48575080516020820120881480612d4857508051602082012087145b8015612d5d57506000826001600160401b0316115b15612d825763ffffffff851660408d01526001600160401b03821660608d0152613154565b60008d82604051602001612d97929190614e85565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff1615612fa157600081815260066020526040812060018101548154919291612e09916001600160401b0390811691600160a01b900416614d13565b60018301549091506001600160401b0380871691612e3091600160401b9091041683614d13565b6001600160401b031611158015612e595750806001600160401b0316856001600160401b031611155b612ef15760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016106d8565b808f600001818151612f039190614d83565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f602001818151612f479190614d83565b6001600160401b0316905250600083815260066020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff1916905588612f9781614909565b9950505050613152565b60008181526007602052604090206001810154600160801b900463ffffffff166130325760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016106d8565b6001810154815460009161305a916001600160401b0391821691600160a01b90910416614d13565b60018301549091506001600160401b038087169161308191600160401b9091041683614d13565b6001600160401b0316111580156130aa5750806001600160401b0316856001600160401b031611155b6131425760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016106d8565b8861314c81614909565b99505050505b505b61315e848a614e25565b985050505050808061316f90614909565b915050612cc7565b50600081116131ee5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016106d8565b50505050505092915050565b6000806000613208846134a6565b909250905080158061321b575060001982145b1561322a575060009392505050565b6000613237836001614e25565b905060005b8281101561329d57855182106132585750600095945050505050565b6000613264878461370f565b905060001981141561327d575060009695505050505050565b6132878184614e25565b925050808061329590614909565b91505061323c565b5093519093149392505050565b60008060006132b8846134a6565b90925090508015806132cb575060001982145b156132da575060009392505050565b60006132e7836001614e25565b905060005b8281101561329d57855182106133085750600095945050505050565b60006133148784613515565b905060001981141561332d575060009695505050505050565b6133378184614e25565b925050808061334590614909565b9150506132ec565b6133e661339a6133606040840184614784565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061375a92505050565b6133a48380614784565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879493925050506020850135613767565b6134585760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016106d8565b6134a26134686040830183614784565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061379a92505050565b5050565b6000806134b4836000613b30565b91509150915091565b600080806134cb85856128a8565b92506135006134da8686613cac565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b915061350c858561370f565b90509250925092565b6000613522826009614e25565b835110156135335750600019611e25565b60008061354a85613545866008614e25565b613b30565b90925090506000198214156135655760001992505050611e25565b80613571836009614e25565b61357b9190614e25565b95945050505050565b6060816135a057506040805160208101909152600081526128b7565b60006135ac8385614e25565b905083811180156135be575080855110155b61360a5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016106d8565b604051915082604083010160405282825283850182038460208701018481015b808210156136435781518383015260208201915061362a565b505050509392505050565b6000611e2582826128a8565b6000806000613668846134a6565b915050806001146136e15760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e707574000000000000000000000000000000000060648201526084016106d8565b60006136ed8582613cc3565b90506136f881613e78565b93506137066134da82613e85565b92505050915091565b600080600061371e8585613e92565b90925090506000198214156137395760001992505050611e25565b80613745836025614e25565b61374f9190614e25565b61357b906004614e25565b6044810151600090611e25565b60008385148015613776575081155b801561378157508251155b1561378e575060016126db565b61357b85848685613ed4565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b1580156137f657600080fd5b505afa15801561380a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382e9190614cb8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561388b57600080fd5b505afa15801561389f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c39190614cb8565b905060006138d86138d386613f7c565b614011565b9050828114156138ea57829350613968565b818114156138fa57819350613968565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016106d8565b600061397386614039565b90506000198114156139ed5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016106d8565b600119811415613a3f5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016106d8565b600219811415613a915760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016106d8565b613abb7f000000000000000000000000000000000000000000000000000000000000000086614ea1565b811015612bd15760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016106d8565b6000806000613b3f8585614240565b905060ff8116613b71576000858581518110613b5d57613b5d6148f3565b016020015190935060f81c9150613ca59050565b83613b7d826001614e3d565b60ff16613b8a9190614e25565b85511015613ba15760001960009250925050613ca5565b60008160ff1660021415613be657613bdb613bc7613bc0876001614e25565b88906128a8565b62ffff0060e882901c1660f89190911c1790565b61ffff169050613c9b565b8160ff1660041415613c1057613c036134da613bc0876001614e25565b63ffffffff169050613c9b565b8160ff1660081415613c9b57613c8f613c2d613bc0876001614e25565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b60006128b7613cbc836020614e25565b84906128a8565b6060600080613cd1856134a6565b9092509050600019821415613d335760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016106d8565b808410613d825760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016106d8565b600080613d90846001614e25565b905060005b86811015613e1957613da7888361370f565b9250600019831415613dfb5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016106d8565b613e058383614e25565b915080613e1181614909565b915050613d95565b50613e24878261370f565b91506000198214156125c55760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016106d8565b6020810151600090611e25565b6000611e258260206128a8565b600080613ea0836025614e25565b84511015613eb5575060001990506000613ca5565b600080613ec786613545876024614e25565b9097909650945050505050565b600060208451613ee49190614ec0565b15613ef1575060006126db565b8351613eff575060006126db565b818560005b8651811015613f6f57613f18600284614ec0565b60011415613f3d57613f36613f308883016020015190565b836142cc565b9150613f56565b613f5382613f4e8984016020015190565b6142cc565b91505b60019290921c91613f68602082614e25565b9050613f04565b5090931495945050505050565b600080613f8a8360486128a8565b60e81c9050600083604b81518110613fa457613fa46148f3565b016020015160f81c90506000613fd883600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff1690506000613fec600384614e62565b60ff169050613ffd81610100614fb8565b6140079083614ea1565b9695505050505050565b6000611e257bffff0000000000000000000000000000000000000000000000000000836142d8565b6000605082516140499190614ec0565b156140575750600019919050565b506040805160808101909152605081526000908190815b8451811015614238576140828583836142e4565b80156140a2576140928284614383565b6140a25750600119949350505050565b60006140ad83613f7c565b90506140b8836128da565b9350806141fc8560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b111561420f575060021995945050505050565b61422261421b82614011565b86906143ac565b94506142319050605082614e25565b905061406e565b505050919050565b6000828281518110614254576142546148f3565b60209101015160f81c60ff141561426d57506008611e25565b82828151811061427f5761427f6148f3565b60209101015160f81c60fe141561429857506004611e25565b8282815181106142aa576142aa6148f3565b60209101015160f81c60fd14156142c357506002611e25565b50600092915050565b60006128b7838361440a565b60006128b782846148df565b815160006142f28284614e25565b90508281118015614304575080855110155b6143505760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016106d8565b826020860101602085018382015b8083101561437957825182526020928301929091019061435e565b5050505050505050565b60008061438f84614438565b90508281146143a2576000915050611e25565b5060019392505050565b60006143b88284614e25565b905082811015611e255760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016106d8565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611e25565b60006020828403121561445757600080fd5b5035919050565b60006080828403121561447057600080fd5b50919050565b60006060828403121561447057600080fd5b600080600060a0848603121561449d57600080fd5b83356001600160401b03808211156144b457600080fd5b6144c08783880161445e565b945060208601359150808211156144d657600080fd5b506144e386828701614476565b92505061350c8560408601614476565b60008082840361010081121561450857600080fd5b83356001600160401b0381111561451e57600080fd5b61452a8682870161445e565b93505060e0601f198201121561453f57600080fd5b506020830190509250929050565b80356001600160a01b038116811461456457600080fd5b919050565b6000806040838503121561457c57600080fd5b6145858361454d565b91506020830135801515811461459a57600080fd5b809150509250929050565b80356001600160601b03198116811461456457600080fd5b6000602082840312156145cf57600080fd5b6128b7826145a5565b60008060008060c085870312156145ee57600080fd5b84356001600160401b038082111561460557600080fd5b6146118883890161445e565b9550602087013591508082111561462757600080fd5b5061463487828801614476565b9350506146448660408701614476565b915061465260a086016145a5565b905092959194509250565b80356001600160401b038116811461456457600080fd5b600080600080600060c0868803121561468c57600080fd5b614695866145a5565b94506146a48760208801614476565b935060808601356001600160401b03808211156146c057600080fd5b818801915088601f8301126146d457600080fd5b8135818111156146e357600080fd5b8960208285010111156146f557600080fd5b60208301955080945050505061470d60a0870161465d565b90509295509295909350565b60006020828403121561472b57600080fd5b6128b78261454d565b634e487b7160e01b600052602160045260246000fd5b604081016005841061476c57634e487b7160e01b600052602160045260246000fd5b9281526001600160401b039190911660209091015290565b6000808335601e1984360301811261479b57600080fd5b8301803591506001600160401b038211156147b557600080fd5b602001915036819003821315613ca557600080fd5b803563ffffffff8116811461456457600080fd5b6000602082840312156147f057600080fd5b6128b7826147ca565b60006020828403121561480b57600080fd5b6128b78261465d565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561483c57600080fd5b604051606081018181106001600160401b038211171561486c57634e487b7160e01b600052604160045260246000fd5b6040528235815261487f602084016147ca565b60208201526148906040840161465d565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156148c4576148c461489c565b500390565b634e487b7160e01b600052601260045260246000fd5b6000826148ee576148ee6148c9565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141561491d5761491d61489c565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156149665781516001600160a01b031684529284019290840190600101614941565b5050508381038285015284518082528583019183019060005b8181101561499b5783518352928401929184019160010161497f565b5090979650505050505050565b6000602082840312156149ba57600080fd5b81356001600160c01b0319811681146128b757600080fd5b6000602082840312156149e457600080fd5b81356001600160e01b0319811681146128b757600080fd5b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f8201526000614ad0614ac3614a9a602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f63000000000000000000000000000000000000000000000000000000000000006015820152614b8f614ac3614a9a614a71614b66601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b60058201529050614c65614c3c60068301614b3d565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b81811015614c925760208185018101518683015201614c78565b81811115614ca1576000828601525b509290920192915050565b60006128b78284614c71565b600060208284031215614cca57600080fd5b5051919050565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b60006001600160401b0383811690831681811015614d3357614d3361489c565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b03808316818516808303821115614da557614da561489c565b01949350505050565b6bffffffffffffffffffffffff198816815260c060208201528560c0820152858760e0830137600060e08783018101919091526001600160a01b039590951660408201526001600160401b039384166060820152918316608083015290911660a0820152601f909201601f19169091010192915050565b60008219821115614e3857614e3861489c565b500190565b600060ff821660ff84168060ff03821115614e5a57614e5a61489c565b019392505050565b600060ff821660ff841680821015614e7c57614e7c61489c565b90039392505050565b6001600160601b03198316815260006126db6014830184614c71565b6000816000190483118215151615614ebb57614ebb61489c565b500290565b600082614ecf57614ecf6148c9565b500690565b600181815b80851115614f0f578160001904821115614ef557614ef561489c565b80851615614f0257918102915b93841c9390800290614ed9565b509250929050565b600082614f2657506001611e25565b81614f3357506000611e25565b8160018114614f495760028114614f5357614f6f565b6001915050611e25565b60ff841115614f6457614f6461489c565b50506001821b611e25565b5060208310610133831016604e8410600b8410161715614f92575081810a611e25565b614f9c8383614ed4565b8060001904821115614fb057614fb061489c565b029392505050565b60006128b78383614f1756fea2646970667358221220fbeb226bb6c3042ac1dff331dba4a7e03ab2989029a5ecf8abe0dbdb1bc5aef164736f6c63430008090033",
471
834
  "linkReferences": {},
472
835
  "deployedLinkReferences": {}
473
836
  }