-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathPostApocalypticItem.json
12690 lines (12690 loc) · 521 KB
/
PostApocalypticItem.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"contractName": "PostApocalypticItem",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "contractURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "player",
"type": "address"
},
{
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"name": "mintItem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"player\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mintItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/PostApocalypticItem.sol\":\"PostApocalypticItem\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"project:/contracts/PostApocalypticItem.sol\":{\"keccak256\":\"0xfd5c51232a2cbdf411ec18d797727049fe04005791dd9179cdcbd70e8a5555c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://699b8b7187c6442db23739d7bde9911d5549bc79d6872a1c45e1ba7e61feee40\",\"dweb:/ipfs/QmTqfrKYYXEKX4JwBxey7cV5Aq4aiggYUbmHB3awTNMFzF\"]},\"project:/node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x7d2b8ba4b256bfcac347991b75242f9bc37f499c5236af50cf09d0b35943dc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8eeaf6afe00229af4c232ca058bb08b7a24cc3886f0b387159ac49ffd8b5312\",\"dweb:/ipfs/QmdnVKmDDWDvdRr6vtrxy3G6WafqA2TAhUZv1UFMsm4B4r\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf101e8720213560fab41104d53b3cc7ba0456ef3a98455aa7f022391783144a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e7820bcf567e6892d937c3cb10db263a4042e446799bca602535868d822384e\",\"dweb:/ipfs/QmPG2oeDjKncqsEeyYGjAN7CwAJmMgHterXGGnpzhha4z7\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd9517254724276e2e8de3769183c1f738f445f0095c26fd9b86d3c6687e887b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e604bcdcd5e5b2fb299ad09769cde6db19d5aa1929d1b5e939234a0f10d7eb8\",\"dweb:/ipfs/Qmd8hXE3GZfBHuWx3RNiYgFW2ci7KvHtib8DiwzJ2dgo9V\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x188d038a65a945481cc13fe30db334472dfbed61f7959d4478d05feb6303b1ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7aec4efa22389811ffa393463569410bbca1ecaa551bc94d69020bc9567e9277\",\"dweb:/ipfs/QmPwk5uVSHPQkepebrZSQ9xqgXdPABKqHwJZ2HkzNByLRE\"]},\"project:/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0xd32fb7f530a914b1083d10a6bed3a586f2451952fec04fe542bcc670a82f7ba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af63ab940a34687c45f0ad84960b048fc5f49330c92ccb422db7822a444733b9\",\"dweb:/ipfs/QmUShaQEu8HS1GjDnsMJQ8jkZEBrecn6NuDZ3pfjY1gVck\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x78450f4e3b722cce467b21e285f72ce5eaf361e9ba9dd2241a413926246773cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103065051300cd995fd4599ba91188d4071b92175b52f26110e02db091617c0\",\"dweb:/ipfs/QmSyDz67R2HCypDE8Pacn3voVwxw9x17NM66q47YgBnGqc\"]},\"project:/node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x391d3ba97ab6856a16b225d6ee29617ad15ff00db70f3b4df1ab5ea33aa47c9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d636ba90bbbeed04a1ea7fe9ec2466757e30fd38ba2ca173636dbf69a518735e\",\"dweb:/ipfs/QmQwCB2BHnEuYR22PYt9HkpbgeFDhq4rHmaYqAZbX3WRC7\"]},\"project:/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x5718c5df9bd67ac68a796961df938821bb5dc0cd4c6118d77e9145afb187409b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d10e1d9b26042424789246603906ad06143bf9a928f4e99de8b5e3bdc662f549\",\"dweb:/ipfs/Qmejonoaj5MLekPus229rJQHcC6E9dz2xorjHJR84fMfmn\"]},\"project:/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xa28007762d9da9db878dd421960c8cb9a10471f47ab5c1b3309bfe48e9e79ff4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://796ab6e88af7bf0e78def0f059310c903af6a312b565344e0ff524a0f26e81c6\",\"dweb:/ipfs/QmcsVgLgzWdor3UnAztUkXKNGcysm1MPneWksF72AvnwBx\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252601081526f506f73742d41706f63616c797074696360801b602080830191825283518085019094526002845261504160f01b9084015281519192916200006491600091620000f3565b5080516200007a906001906020840190620000f3565b50505062000097620000916200009d60201b60201c565b620000a1565b620001d6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001019062000199565b90600052602060002090601f01602090048101928262000125576000855562000170565b82601f106200014057805160ff191683800117855562000170565b8280016001018555821562000170579182015b828111156200017057825182559160200191906001019062000153565b506200017e92915062000182565b5090565b5b808211156200017e576000815560010162000183565b600181811c90821680620001ae57607f821691505b60208210811415620001d057634e487b7160e01b600052602260045260246000fd5b50919050565b611c1480620001e66000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd578063b88d4fde11610081578063e8a3d48511610066578063e8a3d485146102a2578063e985e9c5146102aa578063f2fde38b146102e657600080fd5b8063b88d4fde1461027c578063c87b56dd1461028f57600080fd5b80638da5cb5b116100b25780638da5cb5b1461025057806395d89b4114610261578063a22cb4651461026957600080fd5b806370a0823114610235578063715018a61461024857600080fd5b8063110bcd451161012457806323b872dd1161010957806323b872dd146101fc57806342842e0e1461020f5780636352211e1461022257600080fd5b8063110bcd45146101d357806318160ddd146101f457600080fd5b806301ffc9a71461015657806306fdde031461017e578063081812fc14610193578063095ea7b3146101be575b600080fd5b61016961016436600461170d565b6102f9565b60405190151581526020015b60405180910390f35b610186610396565b6040516101759190611782565b6101a66101a1366004611795565b610428565b6040516001600160a01b039091168152602001610175565b6101d16101cc3660046117ca565b6104c2565b005b6101e66101e1366004611880565b6105f4565b604051908152602001610175565b6101e6610687565b6101d161020a3660046118e2565b610697565b6101d161021d3660046118e2565b61071e565b6101a6610230366004611795565b610739565b6101e661024336600461191e565b6107c4565b6101d161085e565b6007546001600160a01b03166101a6565b6101866108c4565b6101d1610277366004611939565b6108d3565b6101d161028a366004611975565b610998565b61018661029d366004611795565b610a26565b610186610bb9565b6101696102b83660046119f1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101d16102f436600461191e565b610bd9565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061035c57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061039057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600080546103a590611a24565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611a24565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166104a65760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006104cd82610739565b9050806001600160a01b0316836001600160a01b031614156105575760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161049d565b336001600160a01b0382161480610573575061057381336102b8565b6105e55760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161049d565b6105ef8383610cbb565b505050565b6007546000906001600160a01b031633146106515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049d565b61065f600880546001019055565b600061066a60085490565b90506106768482610d36565b6106808184610e85565b9392505050565b600061069260085490565b905090565b6106a13382610f2e565b6107135760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161049d565b6105ef838383611021565b6105ef83838360405180602001604052806000815250610998565b6000818152600260205260408120546001600160a01b0316806103905760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161049d565b60006001600160a01b0382166108425760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161049d565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049d565b6108c260006111fb565b565b6060600180546103a590611a24565b6001600160a01b03821633141561092c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161049d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109a23383610f2e565b610a145760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161049d565b610a208484848461125a565b50505050565b6000818152600260205260409020546060906001600160a01b0316610ab35760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f722060448201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000606482015260840161049d565b60008281526006602052604081208054610acc90611a24565b80601f0160208091040260200160405190810160405280929190818152602001828054610af890611a24565b8015610b455780601f10610b1a57610100808354040283529160200191610b45565b820191906000526020600020905b815481529060010190602001808311610b2857829003601f168201915b505050505090506000610b6360408051602081019091526000815290565b9050805160001415610b76575092915050565b815115610ba8578082604051602001610b90929190611a5f565b60405160208183030381529060405292505050919050565b610bb1846112e3565b949350505050565b6060604051806080016040528060438152602001611b9c60439139905090565b6007546001600160a01b03163314610c335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049d565b6001600160a01b038116610caf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161049d565b610cb8816111fb565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091558190610cfd82610739565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038216610d8c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161049d565b6000818152600260205260409020546001600160a01b031615610df15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161049d565b6001600160a01b0382166000908152600360205260408120805460019290610e1a908490611aa4565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b0316610f0f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e000000000000000000000000000000000000606482015260840161049d565b600082815260066020908152604090912082516105ef9284019061165e565b6000818152600260205260408120546001600160a01b0316610fa75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161049d565b6000610fb283610739565b9050806001600160a01b0316846001600160a01b03161480610fed5750836001600160a01b0316610fe284610428565b6001600160a01b0316145b80610bb157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff16610bb1565b826001600160a01b031661103482610739565b6001600160a01b0316146110b05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161049d565b6001600160a01b03821661112b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161049d565b611136600082610cbb565b6001600160a01b038316600090815260036020526040812080546001929061115f908490611abc565b90915550506001600160a01b038216600090815260036020526040812080546001929061118d908490611aa4565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611265848484611021565b611271848484846113d8565b610a205760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161049d565b6000818152600260205260409020546060906001600160a01b03166113705760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161049d565b600061138760408051602081019091526000815290565b905060008151116113a75760405180602001604052806000815250610680565b806113b18461152c565b6040516020016113c2929190611a5f565b6040516020818303038152906040529392505050565b60006001600160a01b0384163b1561152157604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061141c903390899088908890600401611ad3565b6020604051808303816000875af1925050508015611457575060408051601f3d908101601f1916820190925261145491810190611b0f565b60015b611507573d808015611485576040519150601f19603f3d011682016040523d82523d6000602084013e61148a565b606091505b5080516114ff5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161049d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610bb1565b506001949350505050565b60608161156c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611596578061158081611b2c565b915061158f9050600a83611b5d565b9150611570565b60008167ffffffffffffffff8111156115b1576115b16117f4565b6040519080825280601f01601f1916602001820160405280156115db576020820181803683370190505b5090505b8415610bb1576115f0600183611abc565b91506115fd600a86611b71565b611608906030611aa4565b60f81b81838151811061161d5761161d611b85565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611657600a86611b5d565b94506115df565b82805461166a90611a24565b90600052602060002090601f01602090048101928261168c57600085556116d2565b82601f106116a557805160ff19168380011785556116d2565b828001600101855582156116d2579182015b828111156116d25782518255916020019190600101906116b7565b506116de9291506116e2565b5090565b5b808211156116de57600081556001016116e3565b6001600160e01b031981168114610cb857600080fd5b60006020828403121561171f57600080fd5b8135610680816116f7565b60005b8381101561174557818101518382015260200161172d565b83811115610a205750506000910152565b6000815180845261176e81602086016020860161172a565b601f01601f19169290920160200192915050565b6020815260006106806020830184611756565b6000602082840312156117a757600080fd5b5035919050565b80356001600160a01b03811681146117c557600080fd5b919050565b600080604083850312156117dd57600080fd5b6117e6836117ae565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611825576118256117f4565b604051601f8501601f19908116603f0116810190828211818310171561184d5761184d6117f4565b8160405280935085815286868601111561186657600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561189357600080fd5b61189c836117ae565b9150602083013567ffffffffffffffff8111156118b857600080fd5b8301601f810185136118c957600080fd5b6118d88582356020840161180a565b9150509250929050565b6000806000606084860312156118f757600080fd5b611900846117ae565b925061190e602085016117ae565b9150604084013590509250925092565b60006020828403121561193057600080fd5b610680826117ae565b6000806040838503121561194c57600080fd5b611955836117ae565b91506020830135801515811461196a57600080fd5b809150509250929050565b6000806000806080858703121561198b57600080fd5b611994856117ae565b93506119a2602086016117ae565b925060408501359150606085013567ffffffffffffffff8111156119c557600080fd5b8501601f810187136119d657600080fd5b6119e58782356020840161180a565b91505092959194509250565b60008060408385031215611a0457600080fd5b611a0d836117ae565b9150611a1b602084016117ae565b90509250929050565b600181811c90821680611a3857607f821691505b60208210811415611a5957634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611a7181846020880161172a565b835190830190611a8581836020880161172a565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ab757611ab7611a8e565b500190565b600082821015611ace57611ace611a8e565b500390565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611b056080830184611756565b9695505050505050565b600060208284031215611b2157600080fd5b8151610680816116f7565b6000600019821415611b4057611b40611a8e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611b6c57611b6c611b47565b500490565b600082611b8057611b80611b47565b500690565b634e487b7160e01b600052603260045260246000fdfe68747470733a2f2f697066732e696f2f697066732f516d5954374745657339663779517738784b5a69594a31616b55376546704a3844656b565254727778444d745374a2646970667358221220dc8fa1bce112bc47c5effbc2b6493172a273a1198b43156ba4317d578286de0f64736f6c634300080a0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd578063b88d4fde11610081578063e8a3d48511610066578063e8a3d485146102a2578063e985e9c5146102aa578063f2fde38b146102e657600080fd5b8063b88d4fde1461027c578063c87b56dd1461028f57600080fd5b80638da5cb5b116100b25780638da5cb5b1461025057806395d89b4114610261578063a22cb4651461026957600080fd5b806370a0823114610235578063715018a61461024857600080fd5b8063110bcd451161012457806323b872dd1161010957806323b872dd146101fc57806342842e0e1461020f5780636352211e1461022257600080fd5b8063110bcd45146101d357806318160ddd146101f457600080fd5b806301ffc9a71461015657806306fdde031461017e578063081812fc14610193578063095ea7b3146101be575b600080fd5b61016961016436600461170d565b6102f9565b60405190151581526020015b60405180910390f35b610186610396565b6040516101759190611782565b6101a66101a1366004611795565b610428565b6040516001600160a01b039091168152602001610175565b6101d16101cc3660046117ca565b6104c2565b005b6101e66101e1366004611880565b6105f4565b604051908152602001610175565b6101e6610687565b6101d161020a3660046118e2565b610697565b6101d161021d3660046118e2565b61071e565b6101a6610230366004611795565b610739565b6101e661024336600461191e565b6107c4565b6101d161085e565b6007546001600160a01b03166101a6565b6101866108c4565b6101d1610277366004611939565b6108d3565b6101d161028a366004611975565b610998565b61018661029d366004611795565b610a26565b610186610bb9565b6101696102b83660046119f1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101d16102f436600461191e565b610bd9565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061035c57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061039057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600080546103a590611a24565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611a24565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166104a65760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006104cd82610739565b9050806001600160a01b0316836001600160a01b031614156105575760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161049d565b336001600160a01b0382161480610573575061057381336102b8565b6105e55760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161049d565b6105ef8383610cbb565b505050565b6007546000906001600160a01b031633146106515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049d565b61065f600880546001019055565b600061066a60085490565b90506106768482610d36565b6106808184610e85565b9392505050565b600061069260085490565b905090565b6106a13382610f2e565b6107135760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161049d565b6105ef838383611021565b6105ef83838360405180602001604052806000815250610998565b6000818152600260205260408120546001600160a01b0316806103905760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161049d565b60006001600160a01b0382166108425760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161049d565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049d565b6108c260006111fb565b565b6060600180546103a590611a24565b6001600160a01b03821633141561092c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161049d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109a23383610f2e565b610a145760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161049d565b610a208484848461125a565b50505050565b6000818152600260205260409020546060906001600160a01b0316610ab35760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f722060448201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000606482015260840161049d565b60008281526006602052604081208054610acc90611a24565b80601f0160208091040260200160405190810160405280929190818152602001828054610af890611a24565b8015610b455780601f10610b1a57610100808354040283529160200191610b45565b820191906000526020600020905b815481529060010190602001808311610b2857829003601f168201915b505050505090506000610b6360408051602081019091526000815290565b9050805160001415610b76575092915050565b815115610ba8578082604051602001610b90929190611a5f565b60405160208183030381529060405292505050919050565b610bb1846112e3565b949350505050565b6060604051806080016040528060438152602001611b9c60439139905090565b6007546001600160a01b03163314610c335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049d565b6001600160a01b038116610caf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161049d565b610cb8816111fb565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091558190610cfd82610739565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038216610d8c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161049d565b6000818152600260205260409020546001600160a01b031615610df15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161049d565b6001600160a01b0382166000908152600360205260408120805460019290610e1a908490611aa4565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b0316610f0f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e000000000000000000000000000000000000606482015260840161049d565b600082815260066020908152604090912082516105ef9284019061165e565b6000818152600260205260408120546001600160a01b0316610fa75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161049d565b6000610fb283610739565b9050806001600160a01b0316846001600160a01b03161480610fed5750836001600160a01b0316610fe284610428565b6001600160a01b0316145b80610bb157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff16610bb1565b826001600160a01b031661103482610739565b6001600160a01b0316146110b05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161049d565b6001600160a01b03821661112b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161049d565b611136600082610cbb565b6001600160a01b038316600090815260036020526040812080546001929061115f908490611abc565b90915550506001600160a01b038216600090815260036020526040812080546001929061118d908490611aa4565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611265848484611021565b611271848484846113d8565b610a205760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161049d565b6000818152600260205260409020546060906001600160a01b03166113705760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161049d565b600061138760408051602081019091526000815290565b905060008151116113a75760405180602001604052806000815250610680565b806113b18461152c565b6040516020016113c2929190611a5f565b6040516020818303038152906040529392505050565b60006001600160a01b0384163b1561152157604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061141c903390899088908890600401611ad3565b6020604051808303816000875af1925050508015611457575060408051601f3d908101601f1916820190925261145491810190611b0f565b60015b611507573d808015611485576040519150601f19603f3d011682016040523d82523d6000602084013e61148a565b606091505b5080516114ff5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161049d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610bb1565b506001949350505050565b60608161156c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611596578061158081611b2c565b915061158f9050600a83611b5d565b9150611570565b60008167ffffffffffffffff8111156115b1576115b16117f4565b6040519080825280601f01601f1916602001820160405280156115db576020820181803683370190505b5090505b8415610bb1576115f0600183611abc565b91506115fd600a86611b71565b611608906030611aa4565b60f81b81838151811061161d5761161d611b85565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611657600a86611b5d565b94506115df565b82805461166a90611a24565b90600052602060002090601f01602090048101928261168c57600085556116d2565b82601f106116a557805160ff19168380011785556116d2565b828001600101855582156116d2579182015b828111156116d25782518255916020019190600101906116b7565b506116de9291506116e2565b5090565b5b808211156116de57600081556001016116e3565b6001600160e01b031981168114610cb857600080fd5b60006020828403121561171f57600080fd5b8135610680816116f7565b60005b8381101561174557818101518382015260200161172d565b83811115610a205750506000910152565b6000815180845261176e81602086016020860161172a565b601f01601f19169290920160200192915050565b6020815260006106806020830184611756565b6000602082840312156117a757600080fd5b5035919050565b80356001600160a01b03811681146117c557600080fd5b919050565b600080604083850312156117dd57600080fd5b6117e6836117ae565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611825576118256117f4565b604051601f8501601f19908116603f0116810190828211818310171561184d5761184d6117f4565b8160405280935085815286868601111561186657600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561189357600080fd5b61189c836117ae565b9150602083013567ffffffffffffffff8111156118b857600080fd5b8301601f810185136118c957600080fd5b6118d88582356020840161180a565b9150509250929050565b6000806000606084860312156118f757600080fd5b611900846117ae565b925061190e602085016117ae565b9150604084013590509250925092565b60006020828403121561193057600080fd5b610680826117ae565b6000806040838503121561194c57600080fd5b611955836117ae565b91506020830135801515811461196a57600080fd5b809150509250929050565b6000806000806080858703121561198b57600080fd5b611994856117ae565b93506119a2602086016117ae565b925060408501359150606085013567ffffffffffffffff8111156119c557600080fd5b8501601f810187136119d657600080fd5b6119e58782356020840161180a565b91505092959194509250565b60008060408385031215611a0457600080fd5b611a0d836117ae565b9150611a1b602084016117ae565b90509250929050565b600181811c90821680611a3857607f821691505b60208210811415611a5957634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611a7181846020880161172a565b835190830190611a8581836020880161172a565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ab757611ab7611a8e565b500190565b600082821015611ace57611ace611a8e565b500390565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611b056080830184611756565b9695505050505050565b600060208284031215611b2157600080fd5b8151610680816116f7565b6000600019821415611b4057611b40611a8e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611b6c57611b6c611b47565b500490565b600082611b8057611b80611b47565b500690565b634e487b7160e01b600052603260045260246000fdfe68747470733a2f2f697066732e696f2f697066732f516d5954374745657339663779517738784b5a69594a31616b55376546704a3844656b565254727778444d745374a2646970667358221220dc8fa1bce112bc47c5effbc2b6493172a273a1198b43156ba4317d578286de0f64736f6c634300080a0033",
"immutableReferences": {},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:396:14",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:14",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "69:325:14",
"statements": [
{
"nodeType": "YulAssignment",
"src": "79:22:14",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "93:1:14",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "96:4:14"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "89:3:14"
},
"nodeType": "YulFunctionCall",
"src": "89:12:14"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "79:6:14"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "110:38:14",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "140:4:14"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "146:1:14",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "136:3:14"
},
"nodeType": "YulFunctionCall",
"src": "136:12:14"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "114:18:14",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "187:31:14",
"statements": [
{
"nodeType": "YulAssignment",
"src": "189:27:14",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "203:6:14"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "211:4:14",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "199:3:14"
},
"nodeType": "YulFunctionCall",
"src": "199:17:14"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "189:6:14"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "167:18:14"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "160:6:14"
},
"nodeType": "YulFunctionCall",
"src": "160:26:14"
},
"nodeType": "YulIf",
"src": "157:61:14"
},
{
"body": {
"nodeType": "YulBlock",
"src": "277:111:14",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "298:1:14",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "305:3:14",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "310:10:14",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "301:3:14"
},
"nodeType": "YulFunctionCall",
"src": "301:20:14"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "291:6:14"
},
"nodeType": "YulFunctionCall",
"src": "291:31:14"
},
"nodeType": "YulExpressionStatement",
"src": "291:31:14"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "342:1:14",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "345:4:14",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "335:6:14"
},
"nodeType": "YulFunctionCall",
"src": "335:15:14"
},
"nodeType": "YulExpressionStatement",
"src": "335:15:14"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "370:1:14",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "373:4:14",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "363:6:14"
},
"nodeType": "YulFunctionCall",
"src": "363:15:14"
},
"nodeType": "YulExpressionStatement",
"src": "363:15:14"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "233:18:14"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "256:6:14"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "264:2:14",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "253:2:14"
},
"nodeType": "YulFunctionCall",
"src": "253:14:14"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "230:2:14"
},
"nodeType": "YulFunctionCall",
"src": "230:38:14"
},
"nodeType": "YulIf",
"src": "227:161:14"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "49:4:14",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "58:6:14",
"type": ""
}
],
"src": "14:380:14"
}
]
},
"contents": "{\n { }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}",
"id": 14,
"language": "Yul",
"name": "#utility.yul"
}
],
"deployedGeneratedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:15728:14",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:14",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "58:133:14",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "169:16:14",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "178:1:14",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "181:1:14",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "171:6:14"
},
"nodeType": "YulFunctionCall",
"src": "171:12:14"
},
"nodeType": "YulExpressionStatement",
"src": "171:12:14"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "81:5:14"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "92:5:14"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "99:66:14",
"type": "",
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "88:3:14"
},
"nodeType": "YulFunctionCall",
"src": "88:78:14"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "78:2:14"
},
"nodeType": "YulFunctionCall",
"src": "78:89:14"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "71:6:14"
},
"nodeType": "YulFunctionCall",
"src": "71:97:14"
},
"nodeType": "YulIf",
"src": "68:117:14"
}
]
},
"name": "validator_revert_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "47:5:14",
"type": ""
}
],
"src": "14:177:14"
},
{
"body": {
"nodeType": "YulBlock",
"src": "265:176:14",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "311:16:14",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:14",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "323:1:14",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "313:6:14"
},
"nodeType": "YulFunctionCall",
"src": "313:12:14"
},
"nodeType": "YulExpressionStatement",
"src": "313:12:14"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "286:7:14"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "295:9:14"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "282:3:14"
},
"nodeType": "YulFunctionCall",
"src": "282:23:14"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "307:2:14",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "278:3:14"
},
"nodeType": "YulFunctionCall",
"src": "278:32:14"
},
"nodeType": "YulIf",
"src": "275:52:14"
},
{
"nodeType": "YulVariableDeclaration",
"src": "336:36:14",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "362:9:14"
}
],
"functionName": {
"name": "calldataload",