BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • ThankYouX x GRAMMYs
FA2Ledger
operations (12.3K)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
848
 
1
parameter (or
2
            (or
3
              (or (address %add_admin)
4
                  (or (address %add_minter)
5
                      (pair %balance_of
6
                        (list %requests (pair (address %owner) (nat %token_id)))
7
                        (contract %callback (list (pair
8
                                                  (pair %request (address %owner)
9
                                                                 (nat %token_id))
10
                                                  (nat %balance)))))))
11
              (or
12
                (or (list %burn nat)
13
                    (list %burn_range (pair (nat %token_id_start) (nat %token_id_end))))
14
                (or (unit %destroy)
15
                    (pair %mint (address %owner)
16
                                (list %requests (pair (nat %token_id) (bytes %metadata)))))))
17
            (or
18
              (or
19
                (or (bool %pause)
20
                    (pair %power_mint (address %owner)
21
                                      (list %requests (pair (bytes %metadata)
22
                                                           (pair (nat %token_id_start)
23
                                                                 (nat %token_id_end))))))
24
                (or (address %remove_admin) (address %remove_minter)))
25
              (or
26
                (or
27
                  (list %select (pair (nat %token_id)
28
                                     (pair (address %recipient)
29
                                           (pair (nat %token_id_start)
30
                                                 (nat %token_id_end)))))
31
                  (list %transfer (pair (address %from_)
32
                                       (list %txs (pair (address %to_)
33
                                                       (pair (nat %token_id)
34
                                                             (nat %amount)))))))
35
                (or
36
                  (list %update_operators (or
37
                                           (pair %add_operator (address %owner)
38
                                                               (pair (address %operator)
39
                                                                     (nat %token_id)))
40
                                           (pair %remove_operator (address %owner)
41
                                                                  (pair
42
                                                                    (address %operator)
43
                                                                    (nat %token_id)))))
44
                  (pair %update_range_owner (address %new_owner)
45
                                            (list %requests (pair (nat %token_id_start)
46
                                                                 (nat %token_id_end))))))));
47
storage (pair
48
          (pair
49
            (pair (big_map %administrators address unit)
50
                  (big_map %allowances
51
                    (pair (address %owner) (pair (address %operator) (nat %token_id)))
52
                    unit))
53
            (pair (bool %destroyed) (nat %last_token_id)))
54
          (pair (pair (big_map %ledger nat address) (big_map %minters address unit))
55
                (pair (bool %paused)
56
                      (pair
57
                        (big_map %power_mints
58
                          (pair (nat %token_id_start) (nat %token_id_end))
59
                          (pair (address %owner) (bytes %metadata)))
60
                        (big_map %token_metadata nat
61
                                                 (pair (nat %token_id)
62
                                                       (map %token_info string bytes)))))));
63
code { CAST (pair
64
              (or
65
                (or
66
                  (or address
67
                      (or address
68
                          (pair (list (pair address nat))
69
                                (contract (list (pair (pair address nat) nat))))))
70
                  (or (or (list nat) (list (pair nat nat)))
71
                      (or unit (pair address (list (pair nat bytes))))))
72
                (or
73
                  (or (or bool (pair address (list (pair bytes (pair nat nat)))))
74
                      (or address address))
75
                  (or
76
                    (or (list (pair nat (pair address (pair nat nat))))
77
                        (list (pair address (list (pair address (pair nat nat))))))
78
                    (or
79
                      (list (or (pair address (pair address nat))
80
                               (pair address (pair address nat))))
81
                      (pair address (list (pair nat nat)))))))
82
              (pair
83
                (pair
84
                  (pair (big_map address unit)
85
                        (big_map (pair address (pair address nat)) unit))
86
                  (pair bool nat))
87
                (pair (pair (big_map nat address) (big_map address unit))
88
                      (pair bool
89
                            (pair (big_map (pair nat nat) (pair address bytes))
90
                                  (big_map nat (pair nat (map string bytes)))))))) ;
91
       UNPAIR ;
92
       IF_LEFT
93
         { IF_LEFT
94
             { IF_LEFT
95
                 { SWAP ;
96
                   DUP ;
97
                   DUG 2 ;
98
                   GET 5 ;
99
                   IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
100
                   SWAP ;
101
                   DUP ;
102
                   DUG 2 ;
103
                   CAR ;
104
                   GET 3 ;
105
                   IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
106
                   SWAP ;
107
                   DUP ;
108
                   DUG 2 ;
109
                   CAR ;
110
                   CAR ;
111
                   CAR ;
112
                   SENDER ;
113
                   MEM ;
114
                   IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
115
                   SWAP ;
116
                   UNPAIR ;
117
                   UNPAIR ;
118
                   UNPAIR ;
119
                   PUSH (option unit) (Some Unit) ;
120
                   DIG 5 ;
121
                   UPDATE ;
122
                   PAIR ;
123
                   PAIR ;
124
                   PAIR ;
125
                   NIL operation }
126
                 { IF_LEFT
127
                     { SWAP ;
128
                       DUP ;
129
                       DUG 2 ;
130
                       GET 5 ;
131
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
132
                       SWAP ;
133
                       DUP ;
134
                       DUG 2 ;
135
                       CAR ;
136
                       GET 3 ;
137
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
138
                       SWAP ;
139
                       DUP ;
140
                       DUG 2 ;
141
                       CAR ;
142
                       CAR ;
143
                       CAR ;
144
                       SENDER ;
145
                       MEM ;
146
                       IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
147
                       SWAP ;
148
                       UNPAIR ;
149
                       SWAP ;
150
                       UNPAIR ;
151
                       UNPAIR ;
152
                       SWAP ;
153
                       PUSH (option unit) (Some Unit) ;
154
                       DIG 5 ;
155
                       UPDATE ;
156
                       SWAP ;
157
                       PAIR ;
158
                       PAIR ;
159
                       SWAP ;
160
                       PAIR ;
161
                       NIL operation }
162
                     { SWAP ;
163
                       DUP ;
164
                       DUG 2 ;
165
                       GET 5 ;
166
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
167
                       SWAP ;
168
                       DUP ;
169
                       DUG 2 ;
170
                       CAR ;
171
                       GET 3 ;
172
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
173
                       NIL (pair (pair address nat) nat) ;
174
                       SWAP ;
175
                       DUP ;
176
                       DUG 2 ;
177
                       CAR ;
178
                       ITER { DUP 4 ;
179
                              GET 3 ;
180
                              CAR ;
181
                              SWAP ;
182
                              DUP ;
183
                              DUG 2 ;
184
                              CDR ;
185
                              MEM ;
186
                              IF
187
                                { DUP ;
188
                                  CAR ;
189
                                  DUP 5 ;
190
                                  GET 3 ;
191
                                  CAR ;
192
                                  DUP 3 ;
193
                                  CDR ;
194
                                  GET ;
195
                                  IF_NONE { PUSH int 388 ; FAILWITH } {} ;
196
                                  COMPARE ;
197
                                  EQ }
198
                                { PUSH bool False } ;
199
                              IF
200
                                { SWAP ; PUSH nat 1 ; DIG 2 ; PAIR ; CONS }
201
                                { SWAP ; PUSH nat 0 ; DIG 2 ; PAIR ; CONS } } ;
202
                       NIL operation ;
203
                       DIG 2 ;
204
                       CDR ;
205
                       PUSH mutez 0 ;
206
                       DIG 3 ;
207
                       TRANSFER_TOKENS ;
208
                       CONS } } }
209
             { IF_LEFT
210
                 { IF_LEFT
211
                     { SWAP ;
212
                       DUP ;
213
                       DUG 2 ;
214
                       GET 5 ;
215
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
216
                       SWAP ;
217
                       DUP ;
218
                       DUG 2 ;
219
                       CAR ;
220
                       GET 3 ;
221
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
222
                       SWAP ;
223
                       DUP ;
224
                       DUG 2 ;
225
                       CAR ;
226
                       CAR ;
227
                       CAR ;
228
                       SENDER ;
229
                       MEM ;
230
                       IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
231
                       DUP ;
232
                       ITER { DUP 3 ;
233
                              CAR ;
234
                              GET 4 ;
235
                              SWAP ;
236
                              DUP ;
237
                              DUG 2 ;
238
                              COMPARE ;
239
                              LE ;
240
                              IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
241
                              DUP 3 ;
242
                              GET 3 ;
243
                              CAR ;
244
                              SWAP ;
245
                              DUP ;
246
                              DUG 2 ;
247
                              MEM ;
248
                              IF
249
                                { DIG 2 ;
250
                                  UNPAIR ;
251
                                  SWAP ;
252
                                  UNPAIR ;
253
                                  UNPAIR ;
254
                                  NONE address ;
255
                                  DUP 6 ;
256
                                  UPDATE ;
257
                                  PAIR ;
258
                                  PAIR ;
259
                                  SWAP ;
260
                                  PAIR ;
261
                                  DUG 2 }
262
                                {} ;
263
                              DIG 2 ;
264
                              DUP ;
265
                              GET 8 ;
266
                              PUSH (map string bytes) { Elt "" 0x } ;
267
                              DUP 4 ;
268
                              PAIR ;
269
                              SOME ;
270
                              DIG 3 ;
271
                              UPDATE ;
272
                              UPDATE 8 ;
273
                              SWAP } ;
274
                       DROP }
275
                     { SWAP ;
276
                       DUP ;
277
                       DUG 2 ;
278
                       GET 5 ;
279
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
280
                       SWAP ;
281
                       DUP ;
282
                       DUG 2 ;
283
                       CAR ;
284
                       GET 3 ;
285
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
286
                       SWAP ;
287
                       DUP ;
288
                       DUG 2 ;
289
                       CAR ;
290
                       CAR ;
291
                       CAR ;
292
                       SENDER ;
293
                       MEM ;
294
                       IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
295
                       DUP ;
296
                       ITER { DUP ;
297
                              CAR ;
298
                              SWAP ;
299
                              DUP ;
300
                              DUG 2 ;
301
                              CDR ;
302
                              COMPARE ;
303
                              GE ;
304
                              IF
305
                                {}
306
                                { PUSH string "ONEOF_INVALID_TOKEN_RANGE" ; FAILWITH } ;
307
                              DUP 3 ;
308
                              GET 7 ;
309
                              SWAP ;
310
                              DUP ;
311
                              CDR ;
312
                              SWAP ;
313
                              DUP ;
314
                              DUG 3 ;
315
                              CAR ;
316
                              PAIR ;
317
                              MEM ;
318
                              IF
319
                                {}
320
                                { PUSH string "ONEOF_TOKEN_RANGE_UNDEFINED" ; FAILWITH } ;
321
                              DIG 2 ;
322
                              DUP ;
323
                              GET 7 ;
324
                              NONE (pair address bytes) ;
325
                              DIG 3 ;
326
                              UPDATE ;
327
                              UPDATE 7 ;
328
                              SWAP } ;
329
                       DROP } }
330
                 { IF_LEFT
331
                     { DROP ;
332
                       DUP ;
333
                       GET 5 ;
334
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
335
                       DUP ;
336
                       CAR ;
337
                       GET 3 ;
338
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
339
                       DUP ;
340
                       CAR ;
341
                       CAR ;
342
                       CAR ;
343
                       SENDER ;
344
                       MEM ;
345
                       IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
346
                       UNPAIR ;
347
                       UNPAIR ;
348
                       SWAP ;
349
                       CDR ;
350
                       PUSH bool True ;
351
                       PAIR ;
352
                       SWAP ;
353
                       PAIR ;
354
                       PAIR }
355
                     { SWAP ;
356
                       DUP ;
357
                       DUG 2 ;
358
                       GET 5 ;
359
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
360
                       SWAP ;
361
                       DUP ;
362
                       DUG 2 ;
363
                       CAR ;
364
                       GET 3 ;
365
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
366
                       SWAP ;
367
                       DUP ;
368
                       DUG 2 ;
369
                       GET 3 ;
370
                       CDR ;
371
                       SENDER ;
372
                       MEM ;
373
                       IF {} { PUSH string "ONEOF_NOT_MINTER" ; FAILWITH } ;
374
                       DUP ;
375
                       CDR ;
376
                       ITER { DUP ;
377
                              CAR ;
378
                              PUSH nat 1 ;
379
                              DUP 5 ;
380
                              CAR ;
381
                              GET 4 ;
382
                              ADD ;
383
                              COMPARE ;
384
                              EQ ;
385
                              IF
386
                                {}
387
                                { PUSH string "ONEOF_TOKEN_ALREADY_EXISTS" ; FAILWITH } ;
388
                              DIG 2 ;
389
                              DUP ;
390
                              GET 8 ;
391
                              EMPTY_MAP string bytes ;
392
                              DUP 4 ;
393
                              CDR ;
394
                              SOME ;
395
                              PUSH string "" ;
396
                              UPDATE ;
397
                              DUP 4 ;
398
                              CAR ;
399
                              PAIR ;
400
                              SOME ;
401
                              DUP 4 ;
402
                              CAR ;
403
                              UPDATE ;
404
                              UPDATE 8 ;
405
                              UNPAIR ;
406
                              SWAP ;
407
                              UNPAIR ;
408
                              UNPAIR ;
409
                              DUP 6 ;
410
                              CAR ;
411
                              SOME ;
412
                              DUP 6 ;
413
                              CAR ;
414
                              UPDATE ;
415
                              PAIR ;
416
                              PAIR ;
417
                              SWAP ;
418
                              UNPAIR ;
419
                              SWAP ;
420
                              CAR ;
421
                              DIG 3 ;
422
                              CAR ;
423
                              SWAP ;
424
                              PAIR ;
425
                              SWAP ;
426
                              PAIR ;
427
                              PAIR ;
428
                              SWAP } ;
429
                       DROP } } ;
430
               NIL operation } }
431
         { IF_LEFT
432
             { IF_LEFT
433
                 { IF_LEFT
434
                     { SWAP ;
435
                       DUP ;
436
                       DUG 2 ;
437
                       CAR ;
438
                       GET 3 ;
439
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
440
                       SWAP ;
441
                       DUP ;
442
                       DUG 2 ;
443
                       CAR ;
444
                       CAR ;
445
                       CAR ;
446
                       SENDER ;
447
                       MEM ;
448
                       IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
449
                       UPDATE 5 }
450
                     { SWAP ;
451
                       DUP ;
452
                       DUG 2 ;
453
                       GET 5 ;
454
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
455
                       SWAP ;
456
                       DUP ;
457
                       DUG 2 ;
458
                       CAR ;
459
                       GET 3 ;
460
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
461
                       SWAP ;
462
                       DUP ;
463
                       DUG 2 ;
464
                       GET 3 ;
465
                       CDR ;
466
                       SENDER ;
467
                       MEM ;
468
                       IF {} { PUSH string "ONEOF_NOT_MINTER" ; FAILWITH } ;
469
                       DUP ;
470
                       CDR ;
471
                       ITER { DUP ;
472
                              GET 3 ;
473
                              PUSH nat 1 ;
474
                              DUP 5 ;
475
                              CAR ;
476
                              GET 4 ;
477
                              ADD ;
478
                              COMPARE ;
479
                              EQ ;
480
                              IF
481
                                {}
482
                                { PUSH string "ONEOF_INVALID_TOKEN_RANGE" ; FAILWITH } ;
483
                              DUP ;
484
                              GET 3 ;
485
                              SWAP ;
486
                              DUP ;
487
                              DUG 2 ;
488
                              GET 4 ;
489
                              COMPARE ;
490
                              GE ;
491
                              IF
492
                                {}
493
                                { PUSH string "ONEOF_INVALID_TOKEN_RANGE" ; FAILWITH } ;
494
                              DIG 2 ;
495
                              DUP ;
496
                              GET 7 ;
497
                              DUP 3 ;
498
                              CAR ;
499
                              DUP 5 ;
500
                              CAR ;
501
                              PAIR ;
502
                              SOME ;
503
                              DIG 3 ;
504
                              DUP ;
505
                              GET 4 ;
506
                              SWAP ;
507
                              DUP ;
508
                              DUG 5 ;
509
                              GET 3 ;
510
                              PAIR ;
511
                              UPDATE ;
512
                              UPDATE 7 ;
513
                              UNPAIR ;
514
                              UNPAIR ;
515
                              SWAP ;
516
                              CAR ;
517
                              DIG 3 ;
518
                              GET 4 ;
519
                              SWAP ;
520
                              PAIR ;
521
                              SWAP ;
522
                              PAIR ;
523
                              PAIR ;
524
                              SWAP } ;
525
                       DROP } }
526
                 { IF_LEFT
527
                     { SWAP ;
528
                       DUP ;
529
                       DUG 2 ;
530
                       GET 5 ;
531
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
532
                       SWAP ;
533
                       DUP ;
534
                       DUG 2 ;
535
                       CAR ;
536
                       GET 3 ;
537
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
538
                       SWAP ;
539
                       DUP ;
540
                       DUG 2 ;
541
                       CAR ;
542
                       CAR ;
543
                       CAR ;
544
                       SENDER ;
545
                       MEM ;
546
                       IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
547
                       DUP ;
548
                       SENDER ;
549
                       COMPARE ;
550
                       NEQ ;
551
                       IF {} { PUSH string "ONEOF_CANNOT_REMOVE_ADMIN" ; FAILWITH } ;
552
                       SWAP ;
553
                       UNPAIR ;
554
                       UNPAIR ;
555
                       UNPAIR ;
556
                       NONE unit ;
557
                       DIG 5 ;
558
                       UPDATE ;
559
                       PAIR ;
560
                       PAIR ;
561
                       PAIR }
562
                     { SWAP ;
563
                       DUP ;
564
                       DUG 2 ;
565
                       GET 5 ;
566
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
567
                       SWAP ;
568
                       DUP ;
569
                       DUG 2 ;
570
                       CAR ;
571
                       GET 3 ;
572
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
573
                       SWAP ;
574
                       DUP ;
575
                       DUG 2 ;
576
                       CAR ;
577
                       CAR ;
578
                       CAR ;
579
                       SENDER ;
580
                       MEM ;
581
                       IF {} { PUSH string "ONEOF_NOT_ADMIN" ; FAILWITH } ;
582
                       SWAP ;
583
                       DUP ;
584
                       DUG 2 ;
585
                       GET 3 ;
586
                       CDR ;
587
                       SWAP ;
588
                       DUP ;
589
                       DUG 2 ;
590
                       MEM ;
591
                       IF
592
                         { SWAP ;
593
                           UNPAIR ;
594
                           SWAP ;
595
                           UNPAIR ;
596
                           UNPAIR ;
597
                           SWAP ;
598
                           NONE unit ;
599
                           DIG 5 ;
600
                           UPDATE ;
601
                           SWAP ;
602
                           PAIR ;
603
                           PAIR ;
604
                           SWAP ;
605
                           PAIR }
606
                         { DROP } } } }
607
             { IF_LEFT
608
                 { IF_LEFT
609
                     { SWAP ;
610
                       DUP ;
611
                       DUG 2 ;
612
                       GET 5 ;
613
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
614
                       SWAP ;
615
                       DUP ;
616
                       DUG 2 ;
617
                       CAR ;
618
                       GET 3 ;
619
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
620
                       DUP ;
621
                       ITER { DUP 3 ;
622
                              GET 8 ;
623
                              SWAP ;
624
                              DUP ;
625
                              DUG 2 ;
626
                              CAR ;
627
                              MEM ;
628
                              IF
629
                                { PUSH string "ONEOF_TOKEN_ALREADY_EXISTS" ; FAILWITH }
630
                                {} ;
631
                              DUP ;
632
                              GET 5 ;
633
                              SWAP ;
634
                              DUP ;
635
                              DUG 2 ;
636
                              GET 6 ;
637
                              COMPARE ;
638
                              GE ;
639
                              IF
640
                                {}
641
                                { PUSH string "ONEOF_INVALID_TOKEN_RANGE" ; FAILWITH } ;
642
                              DUP ;
643
                              GET 5 ;
644
                              SWAP ;
645
                              DUP ;
646
                              DUG 2 ;
647
                              CAR ;
648
                              COMPARE ;
649
                              GE ;
650
                              IF
651
                                { DUP ; GET 6 ; SWAP ; DUP ; DUG 2 ; CAR ; COMPARE ; LE }
652
                                { PUSH bool False } ;
653
                              IF
654
                                {}
655
                                { PUSH string "ONEOF_INVALID_TOKEN_RANGE" ; FAILWITH } ;
656
                              DUP 3 ;
657
                              GET 7 ;
658
                              SWAP ;
659
                              DUP ;
660
                              GET 6 ;
661
                              SWAP ;
662
                              DUP ;
663
                              DUG 3 ;
664
                              GET 5 ;
665
                              PAIR ;
666
                              MEM ;
667
                              IF
668
                                {}
669
                                { PUSH string "ONEOF_TOKEN_RANGE_UNDEFINED" ; FAILWITH } ;
670
                              SENDER ;
671
                              DUP 4 ;
672
                              GET 7 ;
673
                              DIG 2 ;
674
                              DUP ;
675
                              GET 6 ;
676
                              SWAP ;
677
                              DUP ;
678
                              DUG 4 ;
679
                              GET 5 ;
680
                              PAIR ;
681
                              GET ;
682
                              IF_NONE { PUSH int 296 ; FAILWITH } {} ;
683
                              CAR ;
684
                              COMPARE ;
685
                              EQ ;
686
                              IF
687
                                { PUSH bool True }
688
                                { DUP 3 ; CAR ; CAR ; CAR ; SENDER ; MEM } ;
689
                              IF
690
                                { PUSH bool True }
691
                                { DUP 3 ; GET 3 ; CDR ; SENDER ; MEM } ;
692
                              IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
693
                              DUP 3 ;
694
                              DUP ;
695
                              GET 8 ;
696
                              EMPTY_MAP string bytes ;
697
                              DIG 5 ;
698
                              GET 7 ;
699
                              DIG 4 ;
700
                              DUP ;
701
                              GET 6 ;
702
                              SWAP ;
703
                              DUP ;
704
                              DUG 6 ;
705
                              GET 5 ;
706
                              PAIR ;
707
                              GET ;
708
                              IF_NONE { PUSH int 296 ; FAILWITH } {} ;
709
                              CDR ;
710
                              SOME ;
711
                              PUSH string "" ;
712
                              UPDATE ;
713
                              DUP 4 ;
714
                              CAR ;
715
                              PAIR ;
716
                              SOME ;
717
                              DUP 4 ;
718
                              CAR ;
719
                              UPDATE ;
720
                              UPDATE 8 ;
721
                              UNPAIR ;
722
                              SWAP ;
723
                              UNPAIR ;
724
                              UNPAIR ;
725
                              DUP 5 ;
726
                              GET 3 ;
727
                              SOME ;
728
                              DIG 5 ;
729
                              CAR ;
730
                              UPDATE ;
731
                              PAIR ;
732
                              PAIR ;
733
                              SWAP ;
734
                              PAIR ;
735
                              SWAP } ;
736
                       DROP }
737
                     { SWAP ;
738
                       DUP ;
739
                       DUG 2 ;
740
                       GET 5 ;
741
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
742
                       SWAP ;
743
                       DUP ;
744
                       DUG 2 ;
745
                       CAR ;
746
                       GET 3 ;
747
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
748
                       DUP ;
749
                       ITER { DUP ;
750
                              CDR ;
751
                              ITER { DUP ;
752
                                     GET 4 ;
753
                                     PUSH nat 0 ;
754
                                     COMPARE ;
755
                                     LT ;
756
                                     IF
757
                                       { DUP ;
758
                                         GET 4 ;
759
                                         PUSH nat 1 ;
760
                                         COMPARE ;
761
                                         EQ ;
762
                                         IF
763
                                           { DUP 4 ; GET 3 ; CAR ; SWAP ; DUP ; DUG 2 ; GET 3 ; MEM }
764
                                           { PUSH bool False } ;
765
                                         IF
766
                                           {}
767
                                           { PUSH string "FA2_INSUFFICIENT_BALANCE" ;
768
                                             FAILWITH } ;
769
                                         SWAP ;
770
                                         DUP ;
771
                                         DUG 2 ;
772
                                         CAR ;
773
                                         SENDER ;
774
                                         COMPARE ;
775
                                         EQ ;
776
                                         IF
777
                                           { PUSH bool True }
778
                                           { DUP 4 ;
779
                                             CAR ;
780
                                             CAR ;
781
                                             CDR ;
782
                                             SWAP ;
783
                                             DUP ;
784
                                             DUG 2 ;
785
                                             GET 3 ;
786
                                             SENDER ;
787
                                             DUP 5 ;
788
                                             CAR ;
789
                                             PAIR 3 ;
790
                                             MEM } ;
791
                                         IF
792
                                           {}
793
                                           { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
794
                                         SWAP ;
795
                                         DUP ;
796
                                         DUG 2 ;
797
                                         CAR ;
798
                                         DUP 5 ;
799
                                         GET 3 ;
800
                                         CAR ;
801
                                         DUP 3 ;
802
                                         GET 3 ;
803
                                         GET ;
804
                                         IF_NONE { PUSH int 376 ; FAILWITH } {} ;
805
                                         COMPARE ;
806
                                         EQ ;
807
                                         IF
808
                                           {}
809
                                           { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
810
                                         DIG 3 ;
811
                                         UNPAIR ;
812
                                         SWAP ;
813
                                         UNPAIR ;
814
                                         UNPAIR ;
815
                                         DUP 5 ;
816
                                         CAR ;
817
                                         SOME ;
818
                                         DIG 5 ;
819
                                         GET 3 ;
820
                                         UPDATE ;
821
                                         PAIR ;
822
                                         PAIR ;
823
                                         SWAP ;
824
                                         PAIR ;
825
                                         DUG 2 }
826
                                       { DROP } } ;
827
                              DROP } ;
828
                       DROP } }
829
                 { IF_LEFT
830
                     { SWAP ;
831
                       DUP ;
832
                       DUG 2 ;
833
                       GET 5 ;
834
                       IF { PUSH string "ONEOF_CONTRACT_PAUSED" ; FAILWITH } {} ;
835
                       SWAP ;
836
                       DUP ;
837
                       DUG 2 ;
838
                       CAR ;
839
                       GET 3 ;
840
                       IF { PUSH string "ONEOF_CONTRACT_DESTROYED" ; FAILWITH } {} ;
841
                       DUP ;
842
                       ITER { IF_LEFT
843
                                { DUP ;
844
                                  CAR ;
845
                                  SENDER ;
846
                                  COMPARE ;
847
                                  EQ ;
848
                                  IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
849
                                  DIG 2 ;
850
                                  UNPAIR ;
851
                                  UNPAIR ;
852
                                  UNPAIR ;
853
                                  SWAP ;
854
                                  PUSH (option unit) (Some Unit) ;
855
                                  DIG 5 ;
856
                                  DUP ;
857
                                  GET 4 ;
858
                                  SWAP ;
859
                                  DUP ;
860
                                  GET 3 ;
861
                                  SWAP ;
862
                                  CAR ;
863
                                  PAIR 3 ;
864
                                  UPDATE ;
865
                                  SWAP ;
866
                                  PAIR ;
867
                                  PAIR ;
868
                                  PAIR ;
869
                                  SWAP }
870
                                { DUP ;
871
                                  CAR ;
872
                                  SENDER ;
873
                                  COMPARE ;
874
                                  EQ ;
875
                                  IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
876
                                  DIG 2 ;
877
                                  UNPAIR ;
878
                                  UNPAIR ;
879
                                  UNPAIR ;
880
                                  SWAP ;
881
                                  NONE unit ;
882
                                  DIG 5 ;
883
                                  DUP ;
884
                                  GET 4 ;
885
                                  SWAP ;
886
                                  DUP ;
887
                                  GET 3 ;
888
                                  SWAP ;
889
                                  CAR ;
890
                                  PAIR 3 ;
891
                                  UPDATE ;
892
                                  SWAP ;
893
                                  PAIR ;
894
                                  PAIR ;
895
                                  PAIR ;
896
                                  SWAP } } ;
897
                       DROP }
898
                     { SWAP ;
899
                       DUP ;
900
                       DUG 2 ;
901
                       CAR ;
902
                       CAR ;
903
                       CAR ;
904
                       SENDER ;
905
                       MEM ;
906
                       IF
907
                         { PUSH bool True }
908
                         { SWAP ; DUP ; DUG 2 ; GET 3 ; CDR ; SENDER ; MEM } ;
909
                       IF {} { PUSH string "ONEOF_NOT_ADMIN_OR_MINTER" ; FAILWITH } ;
910
                       DUP ;
911
                       CDR ;
912
                       ITER { DUP ;
913
                              CAR ;
914
                              SWAP ;
915
                              DUP ;
916
                              DUG 2 ;
917
                              CDR ;
918
                              COMPARE ;
919
                              GE ;
920
                              IF
921
                                {}
922
                                { PUSH string "ONEOF_INVALID_TOKEN_RANGE" ; FAILWITH } ;
923
                              DUP 3 ;
924
                              GET 7 ;
925
                              SWAP ;
926
                              DUP ;
927
                              CDR ;
928
                              SWAP ;
929
                              DUP ;
930
                              DUG 3 ;
931
                              CAR ;
932
                              PAIR ;
933
                              MEM ;
934
                              IF
935
                                {}
936
                                { PUSH string "ONEOF_TOKEN_RANGE_UNDEFINED" ; FAILWITH } ;
937
                              DUP 3 ;
938
                              DUP ;
939
                              GET 7 ;
940
                              DIG 4 ;
941
                              GET 7 ;
942
                              DIG 3 ;
943
                              DUP ;
944
                              CDR ;
945
                              SWAP ;
946
                              DUP ;
947
                              DUG 5 ;
948
                              CAR ;
949
                              PAIR ;
950
                              GET ;
951
                              IF_NONE { PUSH int 276 ; FAILWITH } {} ;
952
                              CDR ;
953
                              DUP 5 ;
954
                              CAR ;
955
                              PAIR ;
956
                              SOME ;
957
                              DIG 3 ;
958
                              UPDATE ;
959
                              UPDATE 7 ;
960
                              SWAP } ;
961
                       DROP } } } ;
962
           NIL operation } ;
963
       PAIR }