BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Tezos Degen Club - Degen Battles
operations (23K)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
1085
 
1
parameter (or
2
            (or
3
              (or (or (nat %cancelGame) (unit %confirmAdmin))
4
                  (or (unit %createGame) (unit %default)))
5
              (or (or (nat %match) (nat %push))
6
                  (or (option %setAdmin address) (option %setArbiter address))))
7
            (or
8
              (or
9
                (pair %setLimits (mutez %checkLimit) (mutez %minStake) (mutez %maxStake)
10
                                 (nat %permille))
11
                (address %setOracle))
12
              (bool %setPause)));
13
storage (pair
14
          (pair
15
            (pair (pair (address %admin) (option %arbiter address))
16
                  (pair (mutez %checkLimit) (address %communityWallet)))
17
            (pair (pair (nat %epoch) (mutez %flipped))
18
                  (pair
19
                    (big_map %games nat
20
                                    (pair (address %p1) (mutez %amount) (nat %status)
21
                                          (option %p2 address)
22
                                          (nat %epoch)
23
                                          (option %ts timestamp)
24
                                          (nat %seed)))
25
                    (nat %gamesTotal))))
26
          (pair
27
            (pair (pair (mutez %maxStake) (mutez %minStake))
28
                  (pair (address %oracle) (bool %paused)))
29
            (pair (pair (option %pending address) (nat %permille))
30
                  (pair (big_map %players address nat) (nat %seed)))));
31
code { PUSH nat 0 ;
32
       NIL operation ;
33
       PUSH string "Robot, huh?" ;
34
       PUSH string "Couldn't call oracle view" ;
35
       PUSH string "Contract is paused" ;
36
       DIG 5 ;
37
       UNPAIR ;
38
       IF_LEFT
39
         { IF_LEFT
40
             { IF_LEFT
41
                 { DIG 2 ;
42
                   DIG 3 ;
43
                   DIG 6 ;
44
                   DROP 3 ;
45
                   IF_LEFT
46
                     { SWAP ;
47
                       DUP ;
48
                       DUG 2 ;
49
                       CDR ;
50
                       CDR ;
51
                       CDR ;
52
                       CAR ;
53
                       SENDER ;
54
                       GET ;
55
                       IF_NONE
56
                         { DIG 2 ; DROP ; UNIT }
57
                         { LEVEL ;
58
                           SWAP ;
59
                           COMPARE ;
60
                           EQ ;
61
                           IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP ; UNIT } } ;
62
                       DROP ;
63
                       SWAP ;
64
                       DUP ;
65
                       DUG 2 ;
66
                       CAR ;
67
                       CDR ;
68
                       CDR ;
69
                       CAR ;
70
                       SWAP ;
71
                       DUP ;
72
                       DUG 2 ;
73
                       GET ;
74
                       IF_NONE
75
                         { PUSH int 1 ; FAILWITH }
76
                         { DUP 3 ;
77
                           CAR ;
78
                           CAR ;
79
                           CAR ;
80
                           CAR ;
81
                           SWAP ;
82
                           DUP ;
83
                           DUG 2 ;
84
                           CAR ;
85
                           COMPARE ;
86
                           EQ ;
87
                           SENDER ;
88
                           DUP 3 ;
89
                           CAR ;
90
                           COMPARE ;
91
                           EQ ;
92
                           OR ;
93
                           IF
94
                             {}
95
                             { DROP ;
96
                               PUSH string "This game isn't yours to cancel!" ;
97
                               FAILWITH } } ;
98
                       PUSH string "Can't cancel this" ;
99
                       NONE address ;
100
                       DUP 3 ;
101
                       GET 7 ;
102
                       COMPARE ;
103
                       EQ ;
104
                       IF { DROP } { FAILWITH } ;
105
                       DUP 3 ;
106
                       CDR ;
107
                       CDR ;
108
                       CDR ;
109
                       CDR ;
110
                       DUP 4 ;
111
                       CDR ;
112
                       CDR ;
113
                       CDR ;
114
                       CAR ;
115
                       LEVEL ;
116
                       SOME ;
117
                       SENDER ;
118
                       UPDATE ;
119
                       PAIR ;
120
                       DUP 4 ;
121
                       CDR ;
122
                       CDR ;
123
                       CAR ;
124
                       PAIR ;
125
                       DUP 4 ;
126
                       CDR ;
127
                       CAR ;
128
                       PAIR ;
129
                       DIG 3 ;
130
                       CAR ;
131
                       PAIR ;
132
                       SWAP ;
133
                       PUSH nat 3 ;
134
                       UPDATE 5 ;
135
                       SWAP ;
136
                       DUP ;
137
                       DUG 2 ;
138
                       CDR ;
139
                       DUP 3 ;
140
                       CAR ;
141
                       CDR ;
142
                       CDR ;
143
                       CDR ;
144
                       DUP 4 ;
145
                       CAR ;
146
                       CDR ;
147
                       CDR ;
148
                       CAR ;
149
                       DUP 4 ;
150
                       DIG 6 ;
151
                       SWAP ;
152
                       SOME ;
153
                       SWAP ;
154
                       UPDATE ;
155
                       PAIR ;
156
                       DUP 4 ;
157
                       CAR ;
158
                       CDR ;
159
                       CAR ;
160
                       PAIR ;
161
                       DIG 3 ;
162
                       CAR ;
163
                       CAR ;
164
                       PAIR ;
165
                       PAIR ;
166
                       DUG 2 ;
167
                       DUP ;
168
                       DUG 3 ;
169
                       GET 3 ;
170
                       DIG 3 ;
171
                       CAR ;
172
                       PUSH mutez 0 ;
173
                       DUP 3 ;
174
                       COMPARE ;
175
                       GT ;
176
                       IF
177
                         { CONTRACT unit ;
178
                           IF_NONE
179
                             { PUSH string "Destination not found" ; FAILWITH }
180
                             {} ;
181
                           DIG 2 ;
182
                           SWAP ;
183
                           DIG 2 ;
184
                           UNIT ;
185
                           TRANSFER_TOKENS ;
186
                           CONS }
187
                         { DROP 2 } ;
188
                       PAIR }
189
                     { DIG 2 ;
190
                       DROP 2 ;
191
                       DUP ;
192
                       CDR ;
193
                       CDR ;
194
                       CAR ;
195
                       CAR ;
196
                       SENDER ;
197
                       SOME ;
198
                       COMPARE ;
199
                       NEQ ;
200
                       IF { PUSH int 1 ; FAILWITH } {} ;
201
                       DUP ;
202
                       CDR ;
203
                       SWAP ;
204
                       DUP ;
205
                       DUG 2 ;
206
                       CAR ;
207
                       CDR ;
208
                       DUP 3 ;
209
                       CAR ;
210
                       CAR ;
211
                       CDR ;
212
                       DIG 3 ;
213
                       CAR ;
214
                       CAR ;
215
                       CAR ;
216
                       CDR ;
217
                       SENDER ;
218
                       PAIR ;
219
                       PAIR ;
220
                       PAIR ;
221
                       PAIR ;
222
                       DUP ;
223
                       CDR ;
224
                       CDR ;
225
                       CDR ;
226
                       SWAP ;
227
                       DUP ;
228
                       DUG 2 ;
229
                       CDR ;
230
                       CDR ;
231
                       CAR ;
232
                       CDR ;
233
                       NONE address ;
234
                       PAIR ;
235
                       PAIR ;
236
                       SWAP ;
237
                       DUP ;
238
                       DUG 2 ;
239
                       CDR ;
240
                       CAR ;
241
                       PAIR ;
242
                       SWAP ;
243
                       CAR ;
244
                       PAIR ;
245
                       SWAP ;
246
                       PAIR } }
247
                 { IF_LEFT
248
                     { DROP ;
249
                       SWAP ;
250
                       PUSH bool False ;
251
                       DUP 3 ;
252
                       CDR ;
253
                       CAR ;
254
                       CDR ;
255
                       CDR ;
256
                       COMPARE ;
257
                       EQ ;
258
                       IF { DROP } { FAILWITH } ;
259
                       PUSH string "Failed" ;
260
                       SOURCE ;
261
                       SENDER ;
262
                       COMPARE ;
263
                       EQ ;
264
                       IF { DROP } { FAILWITH } ;
265
                       PUSH string "Stake is too low" ;
266
                       SWAP ;
267
                       DUP ;
268
                       DUG 2 ;
269
                       CDR ;
270
                       CAR ;
271
                       CAR ;
272
                       CDR ;
273
                       AMOUNT ;
274
                       COMPARE ;
275
                       GE ;
276
                       IF { DROP } { FAILWITH } ;
277
                       PUSH string "Stake is too high" ;
278
                       SWAP ;
279
                       DUP ;
280
                       DUG 2 ;
281
                       CDR ;
282
                       CAR ;
283
                       CAR ;
284
                       CAR ;
285
                       AMOUNT ;
286
                       COMPARE ;
287
                       LE ;
288
                       IF { DROP } { FAILWITH } ;
289
                       PUSH string "Stake should be rounded to the nearest integer value" ;
290
                       PUSH mutez 0 ;
291
                       PUSH mutez 1000000 ;
292
                       AMOUNT ;
293
                       EDIV ;
294
                       IF_NONE { PUSH string "MOD by 0" ; FAILWITH } {} ;
295
                       CDR ;
296
                       COMPARE ;
297
                       EQ ;
298
                       IF { DROP } { FAILWITH } ;
299
                       DUP ;
300
                       CDR ;
301
                       CDR ;
302
                       CDR ;
303
                       CAR ;
304
                       SENDER ;
305
                       GET ;
306
                       IF_NONE
307
                         { DIG 2 ; DROP ; UNIT }
308
                         { LEVEL ;
309
                           SWAP ;
310
                           COMPARE ;
311
                           EQ ;
312
                           IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP ; UNIT } } ;
313
                       DROP ;
314
                       DUP ;
315
                       CDR ;
316
                       CDR ;
317
                       CDR ;
318
                       CDR ;
319
                       SWAP ;
320
                       DUP ;
321
                       DUG 2 ;
322
                       CDR ;
323
                       CDR ;
324
                       CDR ;
325
                       CAR ;
326
                       LEVEL ;
327
                       SOME ;
328
                       SENDER ;
329
                       UPDATE ;
330
                       PAIR ;
331
                       SWAP ;
332
                       DUP ;
333
                       DUG 2 ;
334
                       CDR ;
335
                       CDR ;
336
                       CAR ;
337
                       PAIR ;
338
                       SWAP ;
339
                       DUP ;
340
                       DUG 2 ;
341
                       CDR ;
342
                       CAR ;
343
                       PAIR ;
344
                       SWAP ;
345
                       CAR ;
346
                       PAIR ;
347
                       DUP ;
348
                       CDR ;
349
                       SWAP ;
350
                       DUP ;
351
                       DUG 2 ;
352
                       CAR ;
353
                       CDR ;
354
                       CDR ;
355
                       DUP 3 ;
356
                       CAR ;
357
                       CDR ;
358
                       CAR ;
359
                       CDR ;
360
                       DUP 4 ;
361
                       CDR ;
362
                       CAR ;
363
                       CDR ;
364
                       CAR ;
365
                       UNIT ;
366
                       VIEW "get_epoch" nat ;
367
                       IF_NONE { DIG 4 ; FAILWITH } { DIG 5 ; DROP } ;
368
                       PAIR ;
369
                       PAIR ;
370
                       DIG 2 ;
371
                       CAR ;
372
                       CAR ;
373
                       PAIR ;
374
                       PAIR ;
375
                       DUP ;
376
                       CDR ;
377
                       SWAP ;
378
                       DUP ;
379
                       DUG 2 ;
380
                       CAR ;
381
                       CDR ;
382
                       CDR ;
383
                       CDR ;
384
                       DUP 3 ;
385
                       CAR ;
386
                       CDR ;
387
                       CDR ;
388
                       CAR ;
389
                       PUSH nat 0 ;
390
                       NONE timestamp ;
391
                       DUP 6 ;
392
                       CAR ;
393
                       CDR ;
394
                       CAR ;
395
                       CAR ;
396
                       NONE address ;
397
                       DIG 9 ;
398
                       AMOUNT ;
399
                       SENDER ;
400
                       PAIR 7 ;
401
                       DUP 5 ;
402
                       CAR ;
403
                       CDR ;
404
                       CDR ;
405
                       CDR ;
406
                       SWAP ;
407
                       SOME ;
408
                       SWAP ;
409
                       UPDATE ;
410
                       PAIR ;
411
                       DUP 3 ;
412
                       CAR ;
413
                       CDR ;
414
                       CAR ;
415
                       PAIR ;
416
                       DIG 2 ;
417
                       CAR ;
418
                       CAR ;
419
                       PAIR ;
420
                       PAIR ;
421
                       DUP ;
422
                       CDR ;
423
                       PUSH nat 1 ;
424
                       DUP 3 ;
425
                       CAR ;
426
                       CDR ;
427
                       CDR ;
428
                       CDR ;
429
                       ADD ;
430
                       DUP 3 ;
431
                       CAR ;
432
                       CDR ;
433
                       CDR ;
434
                       CAR ;
435
                       PAIR ;
436
                       DUP 3 ;
437
                       CAR ;
438
                       CDR ;
439
                       CAR ;
440
                       PAIR ;
441
                       DIG 2 ;
442
                       CAR ;
443
                       CAR ;
444
                       PAIR ;
445
                       PAIR ;
446
                       SWAP ;
447
                       PAIR }
448
                     { DIG 2 ; DIG 3 ; DIG 4 ; DIG 6 ; DROP 5 ; SWAP ; PAIR } } }
449
             { IF_LEFT
450
                 { IF_LEFT
451
                     { DIG 2 ;
452
                       PUSH bool False ;
453
                       DUP 4 ;
454
                       CDR ;
455
                       CAR ;
456
                       CDR ;
457
                       CDR ;
458
                       COMPARE ;
459
                       EQ ;
460
                       IF { DROP } { FAILWITH } ;
461
                       SWAP ;
462
                       DUP ;
463
                       DUG 2 ;
464
                       CDR ;
465
                       CDR ;
466
                       CDR ;
467
                       CAR ;
468
                       SENDER ;
469
                       GET ;
470
                       IF_NONE
471
                         { DIG 3 ; DROP ; UNIT }
472
                         { LEVEL ;
473
                           SWAP ;
474
                           COMPARE ;
475
                           EQ ;
476
                           IF { DIG 3 ; FAILWITH } { DIG 3 ; DROP ; UNIT } } ;
477
                       DROP ;
478
                       SWAP ;
479
                       DUP ;
480
                       DUG 2 ;
481
                       CAR ;
482
                       CDR ;
483
                       CDR ;
484
                       CAR ;
485
                       SWAP ;
486
                       DUP ;
487
                       DUG 2 ;
488
                       GET ;
489
                       IF_NONE { PUSH int 1 ; FAILWITH } {} ;
490
                       PUSH string "Can't touch this" ;
491
                       DIG 6 ;
492
                       DUP 3 ;
493
                       GET 5 ;
494
                       COMPARE ;
495
                       EQ ;
496
                       IF { DROP } { FAILWITH } ;
497
                       PUSH string "Stake mismatch" ;
498
                       AMOUNT ;
499
                       DUP 3 ;
500
                       GET 3 ;
501
                       COMPARE ;
502
                       EQ ;
503
                       IF { DROP } { FAILWITH } ;
504
                       DUP ;
505
                       GET 7 ;
506
                       IF_NONE {} { DROP ; PUSH int 2 ; FAILWITH } ;
507
                       DUP 3 ;
508
                       CDR ;
509
                       CDR ;
510
                       CDR ;
511
                       CDR ;
512
                       DUP 4 ;
513
                       CDR ;
514
                       CDR ;
515
                       CDR ;
516
                       CAR ;
517
                       LEVEL ;
518
                       SOME ;
519
                       SENDER ;
520
                       UPDATE ;
521
                       PAIR ;
522
                       DUP 4 ;
523
                       CDR ;
524
                       CDR ;
525
                       CAR ;
526
                       PAIR ;
527
                       DUP 4 ;
528
                       CDR ;
529
                       CAR ;
530
                       PAIR ;
531
                       DIG 3 ;
532
                       CAR ;
533
                       PAIR ;
534
                       DUP ;
535
                       DUG 2 ;
536
                       CDR ;
537
                       CAR ;
538
                       CDR ;
539
                       CAR ;
540
                       UNIT ;
541
                       VIEW "get_epoch" nat ;
542
                       IF_NONE { DUP 4 ; FAILWITH } {} ;
543
                       UPDATE 9 ;
544
                       SWAP ;
545
                       DUP ;
546
                       DUG 2 ;
547
                       CDR ;
548
                       CDR ;
549
                       CDR ;
550
                       CDR ;
551
                       PUSH nat 13 ;
552
                       SWAP ;
553
                       DUP ;
554
                       DUG 2 ;
555
                       LSL ;
556
                       XOR ;
557
                       PUSH nat 17 ;
558
                       SWAP ;
559
                       DUP ;
560
                       DUG 2 ;
561
                       LSR ;
562
                       XOR ;
563
                       PUSH nat 5 ;
564
                       SWAP ;
565
                       DUP ;
566
                       DUG 2 ;
567
                       LSL ;
568
                       XOR ;
569
                       PUSH nat 4294967295 ;
570
                       AND ;
571
                       DUP 3 ;
572
                       DUP 3 ;
573
                       GET 9 ;
574
                       SWAP ;
575
                       CDR ;
576
                       CAR ;
577
                       CDR ;
578
                       CAR ;
579
                       SWAP ;
580
                       VIEW "get_seed" nat ;
581
                       IF_NONE { DIG 4 ; FAILWITH } { DIG 5 ; DROP } ;
582
                       XOR ;
583
                       DUP 3 ;
584
                       CDR ;
585
                       CDR ;
586
                       CDR ;
587
                       CAR ;
588
                       PAIR ;
589
                       DUP 3 ;
590
                       CDR ;
591
                       CDR ;
592
                       CAR ;
593
                       PAIR ;
594
                       DUP 3 ;
595
                       CDR ;
596
                       CAR ;
597
                       PAIR ;
598
                       DIG 2 ;
599
                       CAR ;
600
                       PAIR ;
601
                       SWAP ;
602
                       SENDER ;
603
                       SOME ;
604
                       UPDATE 7 ;
605
                       NOW ;
606
                       SOME ;
607
                       UPDATE 11 ;
608
                       SWAP ;
609
                       DUP ;
610
                       DUG 2 ;
611
                       CDR ;
612
                       CDR ;
613
                       CDR ;
614
                       CDR ;
615
                       UPDATE 12 ;
616
                       SWAP ;
617
                       DUP ;
618
                       DUG 2 ;
619
                       CDR ;
620
                       DUP 3 ;
621
                       CAR ;
622
                       CDR ;
623
                       CDR ;
624
                       CDR ;
625
                       DUP 4 ;
626
                       CAR ;
627
                       CDR ;
628
                       CDR ;
629
                       CAR ;
630
                       DUP 4 ;
631
                       DIG 6 ;
632
                       SWAP ;
633
                       SOME ;
634
                       SWAP ;
635
                       UPDATE ;
636
                       PAIR ;
637
                       DUP 4 ;
638
                       CAR ;
639
                       CDR ;
640
                       CAR ;
641
                       PAIR ;
642
                       DIG 3 ;
643
                       CAR ;
644
                       CAR ;
645
                       PAIR ;
646
                       PAIR ;
647
                       DUP ;
648
                       CDR ;
649
                       SWAP ;
650
                       DUP ;
651
                       DUG 2 ;
652
                       CAR ;
653
                       CDR ;
654
                       CDR ;
655
                       DIG 3 ;
656
                       GET 3 ;
657
                       DUP 4 ;
658
                       CAR ;
659
                       CDR ;
660
                       CAR ;
661
                       CDR ;
662
                       ADD ;
663
                       DUP 4 ;
664
                       CAR ;
665
                       CDR ;
666
                       CAR ;
667
                       CAR ;
668
                       PAIR ;
669
                       PAIR ;
670
                       DIG 2 ;
671
                       CAR ;
672
                       CAR ;
673
                       PAIR ;
674
                       PAIR ;
675
                       SWAP ;
676
                       PAIR }
677
                     { DIG 2 ;
678
                       DROP ;
679
                       SWAP ;
680
                       DUP ;
681
                       DUG 2 ;
682
                       CAR ;
683
                       CAR ;
684
                       CAR ;
685
                       CDR ;
686
                       IF_NONE
687
                         { SWAP ;
688
                           DUP ;
689
                           DUG 2 ;
690
                           CDR ;
691
                           CDR ;
692
                           CDR ;
693
                           CAR ;
694
                           SENDER ;
695
                           GET ;
696
                           IF_NONE
697
                             { DIG 3 ; DROP ; SENDER }
698
                             { LEVEL ;
699
                               SWAP ;
700
                               COMPARE ;
701
                               EQ ;
702
                               IF { DIG 3 ; FAILWITH } { DIG 3 ; DROP ; SENDER } } }
703
                         { DIG 4 ; DROP } ;
704
                       PUSH string "Unknown source" ;
705
                       SENDER ;
706
                       DUP 3 ;
707
                       COMPARE ;
708
                       EQ ;
709
                       IF { DROP } { FAILWITH } ;
710
                       DUP 3 ;
711
                       CAR ;
712
                       CDR ;
713
                       CDR ;
714
                       CAR ;
715
                       DUP 3 ;
716
                       GET ;
717
                       IF_NONE { PUSH int 2 ; FAILWITH } {} ;
718
                       PUSH string "Game status is wrong" ;
719
                       DIG 7 ;
720
                       DUP 3 ;
721
                       GET 5 ;
722
                       COMPARE ;
723
                       EQ ;
724
                       IF { DROP } { FAILWITH } ;
725
                       DUP ;
726
                       GET 7 ;
727
                       IF_NONE { PUSH string "No address found" ; FAILWITH } {} ;
728
                       SWAP ;
729
                       DUP ;
730
                       DUG 2 ;
731
                       GET 12 ;
732
                       DUP 6 ;
733
                       PUSH nat 2 ;
734
                       DUP 5 ;
735
                       GET 9 ;
736
                       ADD ;
737
                       SWAP ;
738
                       CDR ;
739
                       CAR ;
740
                       CDR ;
741
                       CAR ;
742
                       SWAP ;
743
                       VIEW "get_seed" nat ;
744
                       IF_NONE { DIG 6 ; FAILWITH } { DIG 7 ; DROP } ;
745
                       ADD ;
746
                       PUSH nat 13 ;
747
                       SWAP ;
748
                       DUP ;
749
                       DUG 2 ;
750
                       LSL ;
751
                       XOR ;
752
                       PUSH nat 17 ;
753
                       SWAP ;
754
                       DUP ;
755
                       DUG 2 ;
756
                       LSR ;
757
                       XOR ;
758
                       PUSH nat 5 ;
759
                       SWAP ;
760
                       DUP ;
761
                       DUG 2 ;
762
                       LSL ;
763
                       XOR ;
764
                       PUSH nat 4294967295 ;
765
                       AND ;
766
                       PUSH nat 0 ;
767
                       PUSH nat 4 ;
768
                       DUP 3 ;
769
                       AND ;
770
                       COMPARE ;
771
                       EQ ;
772
                       IF
773
                         { SWAP ; DROP ; SWAP ; PUSH nat 1 ; UPDATE 5 ; DUP ; CAR ; SWAP ; PAIR }
774
                         { SWAP ; DIG 2 ; PUSH nat 2 ; UPDATE 5 ; PAIR } ;
775
                       DUP ;
776
                       CAR ;
777
                       DIG 2 ;
778
                       UPDATE 12 ;
779
                       NOW ;
780
                       SOME ;
781
                       UPDATE 11 ;
782
                       DUP 5 ;
783
                       CDR ;
784
                       DUP 6 ;
785
                       CAR ;
786
                       CDR ;
787
                       CDR ;
788
                       CDR ;
789
                       DUP 7 ;
790
                       CAR ;
791
                       CDR ;
792
                       CDR ;
793
                       CAR ;
794
                       DUP 4 ;
795
                       DIG 7 ;
796
                       SWAP ;
797
                       SOME ;
798
                       SWAP ;
799
                       UPDATE ;
800
                       PAIR ;
801
                       DUP 6 ;
802
                       CAR ;
803
                       CDR ;
804
                       CAR ;
805
                       PAIR ;
806
                       DIG 5 ;
807
                       CAR ;
808
                       CAR ;
809
                       PAIR ;
810
                       PAIR ;
811
                       PUSH nat 1000 ;
812
                       DIG 2 ;
813
                       GET 3 ;
814
                       EDIV ;
815
                       IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
816
                       CAR ;
817
                       SWAP ;
818
                       DUP ;
819
                       DUG 2 ;
820
                       CDR ;
821
                       CDR ;
822
                       CAR ;
823
                       CDR ;
824
                       SWAP ;
825
                       DUP ;
826
                       DUG 2 ;
827
                       MUL ;
828
                       DUP 3 ;
829
                       CDR ;
830
                       CDR ;
831
                       CAR ;
832
                       CDR ;
833
                       PUSH nat 1000 ;
834
                       SUB ;
835
                       ABS ;
836
                       DIG 2 ;
837
                       MUL ;
838
                       DIG 5 ;
839
                       PUSH nat 2 ;
840
                       DIG 2 ;
841
                       MUL ;
842
                       DIG 4 ;
843
                       CDR ;
844
                       PUSH mutez 0 ;
845
                       DUP 3 ;
846
                       COMPARE ;
847
                       GT ;
848
                       IF
849
                         { CONTRACT unit ;
850
                           IF_NONE
851
                             { PUSH string "Destination not found" ; FAILWITH }
852
                             {} ;
853
                           DIG 2 ;
854
                           SWAP ;
855
                           DIG 2 ;
856
                           UNIT ;
857
                           TRANSFER_TOKENS ;
858
                           CONS }
859
                         { DROP 2 } ;
860
                       DUP 3 ;
861
                       CAR ;
862
                       CAR ;
863
                       CDR ;
864
                       CAR ;
865
                       PUSH nat 2 ;
866
                       DIG 3 ;
867
                       MUL ;
868
                       SUB_MUTEZ ;
869
                       IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
870
                       DUP 3 ;
871
                       CAR ;
872
                       CAR ;
873
                       CDR ;
874
                       CDR ;
875
                       PUSH mutez 0 ;
876
                       DUP 3 ;
877
                       COMPARE ;
878
                       GT ;
879
                       IF
880
                         { CONTRACT unit ;
881
                           IF_NONE
882
                             { PUSH string "Destination not found" ; FAILWITH }
883
                             {} ;
884
                           DIG 2 ;
885
                           SWAP ;
886
                           DIG 2 ;
887
                           UNIT ;
888
                           TRANSFER_TOKENS ;
889
                           CONS }
890
                         { DROP 2 } ;
891
                       SWAP ;
892
                       DUP ;
893
                       DUG 2 ;
894
                       CAR ;
895
                       CAR ;
896
                       CDR ;
897
                       CAR ;
898
                       DIG 3 ;
899
                       PUSH mutez 0 ;
900
                       DUP 3 ;
901
                       COMPARE ;
902
                       GT ;
903
                       IF
904
                         { CONTRACT unit ;
905
                           IF_NONE
906
                             { PUSH string "Destination not found" ; FAILWITH }
907
                             {} ;
908
                           DIG 2 ;
909
                           SWAP ;
910
                           DIG 2 ;
911
                           UNIT ;
912
                           TRANSFER_TOKENS ;
913
                           CONS }
914
                         { DROP 2 } ;
915
                       PAIR } }
916
                 { DIG 2 ;
917
                   DIG 3 ;
918
                   DIG 4 ;
919
                   DIG 6 ;
920
                   DROP 4 ;
921
                   IF_LEFT
922
                     { SWAP ;
923
                       DUP ;
924
                       DUG 2 ;
925
                       CAR ;
926
                       CAR ;
927
                       CAR ;
928
                       CAR ;
929
                       SENDER ;
930
                       COMPARE ;
931
                       NEQ ;
932
                       IF { PUSH int 1 ; FAILWITH } {} ;
933
                       SWAP ;
934
                       DUP ;
935
                       DUG 2 ;
936
                       CDR ;
937
                       CDR ;
938
                       CDR ;
939
                       DUP 3 ;
940
                       CDR ;
941
                       CDR ;
942
                       CAR ;
943
                       CDR ;
944
                       DIG 2 ;
945
                       PAIR ;
946
                       PAIR ;
947
                       SWAP ;
948
                       DUP ;
949
                       DUG 2 ;
950
                       CDR ;
951
                       CAR ;
952
                       PAIR ;
953
                       SWAP ;
954
                       CAR ;
955
                       PAIR ;
956
                       SWAP ;
957
                       PAIR }
958
                     { SWAP ;
959
                       DUP ;
960
                       DUG 2 ;
961
                       CAR ;
962
                       CAR ;
963
                       CAR ;
964
                       CAR ;
965
                       SENDER ;
966
                       COMPARE ;
967
                       NEQ ;
968
                       IF { PUSH int 1 ; FAILWITH } {} ;
969
                       SWAP ;
970
                       DUP ;
971
                       DUG 2 ;
972
                       CDR ;
973
                       DUP 3 ;
974
                       CAR ;
975
                       CDR ;
976
                       DUP 4 ;
977
                       CAR ;
978
                       CAR ;
979
                       CDR ;
980
                       DIG 3 ;
981
                       DIG 4 ;
982
                       CAR ;
983
                       CAR ;
984
                       CAR ;
985
                       CAR ;
986
                       PAIR ;
987
                       PAIR ;
988
                       PAIR ;
989
                       PAIR ;
990
                       SWAP ;
991
                       PAIR } } } }
992
         { DIG 2 ;
993
           DIG 3 ;
994
           DIG 4 ;
995
           DIG 6 ;
996
           DROP 4 ;
997
           IF_LEFT
998
             { IF_LEFT
999
                 { SWAP ;
1000
                   DUP ;
1001
                   DUG 2 ;
1002
                   CAR ;
1003
                   CAR ;
1004
                   CAR ;
1005
                   CAR ;
1006
                   SENDER ;
1007
                   COMPARE ;
1008
                   NEQ ;
1009
                   IF { PUSH int 1 ; FAILWITH } {} ;
1010
                   SWAP ;
1011
                   DUP ;
1012
                   DUG 2 ;
1013
                   CDR ;
1014
                   DUP 3 ;
1015
                   CAR ;
1016
                   CDR ;
1017
                   DUP 4 ;
1018
                   CAR ;
1019
                   CAR ;
1020
                   CDR ;
1021
                   CDR ;
1022
                   DUP 4 ;
1023
                   CAR ;
1024
                   PAIR ;
1025
                   DIG 4 ;
1026
                   CAR ;
1027
                   CAR ;
1028
                   CAR ;
1029
                   PAIR ;
1030
                   PAIR ;
1031
                   PAIR ;
1032
                   DUP ;
1033
                   CDR ;
1034
                   CDR ;
1035
                   SWAP ;
1036
                   DUP ;
1037
                   DUG 2 ;
1038
                   CDR ;
1039
                   CAR ;
1040
                   CDR ;
1041
                   DUP 4 ;
1042
                   GET 3 ;
1043
                   DUP 4 ;
1044
                   CDR ;
1045
                   CAR ;
1046
                   CAR ;
1047
                   CAR ;
1048
                   PAIR ;
1049
                   PAIR ;
1050
                   PAIR ;
1051
                   SWAP ;
1052
                   CAR ;
1053
                   PAIR ;
1054
                   DUP ;
1055
                   CDR ;
1056
                   CDR ;
1057
                   SWAP ;
1058
                   DUP ;
1059
                   DUG 2 ;
1060
                   CDR ;
1061
                   CAR ;
1062
                   CDR ;
1063
                   DUP 3 ;
1064
                   CDR ;
1065
                   CAR ;
1066
                   CAR ;
1067
                   CDR ;
1068
                   DUP 5 ;
1069
                   GET 5 ;
1070
                   PAIR ;
1071
                   PAIR ;
1072
                   PAIR ;
1073
                   SWAP ;
1074
                   CAR ;
1075
                   PAIR ;
1076
                   DUP ;
1077
                   CDR ;
1078
                   CDR ;
1079
                   CDR ;
1080
                   DIG 2 ;
1081
                   GET 6 ;
1082
                   DUP 3 ;
1083
                   CDR ;
1084
                   CDR ;
1085
                   CAR ;
1086
                   CAR ;
1087
                   PAIR ;
1088
                   PAIR ;
1089
                   SWAP ;
1090
                   DUP ;
1091
                   DUG 2 ;
1092
                   CDR ;
1093
                   CAR ;
1094
                   PAIR ;
1095
                   SWAP ;
1096
                   CAR ;
1097
                   PAIR ;
1098
                   SWAP ;
1099
                   PAIR }
1100
                 { PUSH string "You are not administrator" ;
1101
                   DUP 3 ;
1102
                   CAR ;
1103
                   CAR ;
1104
                   CAR ;
1105
                   CAR ;
1106
                   SENDER ;
1107
                   COMPARE ;
1108
                   EQ ;
1109
                   IF { DROP } { FAILWITH } ;
1110
                   SWAP ;
1111
                   DUP ;
1112
                   DUG 2 ;
1113
                   CDR ;
1114
                   CDR ;
1115
                   DUP 3 ;
1116
                   CDR ;
1117
                   CAR ;
1118
                   CDR ;
1119
                   CDR ;
1120
                   DIG 2 ;
1121
                   PAIR ;
1122
                   DUP 3 ;
1123
                   CDR ;
1124
                   CAR ;
1125
                   CAR ;
1126
                   PAIR ;
1127
                   PAIR ;
1128
                   SWAP ;
1129
                   CAR ;
1130
                   PAIR ;
1131
                   SWAP ;
1132
                   PAIR } }
1133
             { SWAP ;
1134
               DUP ;
1135
               DUG 2 ;
1136
               CAR ;
1137
               CAR ;
1138
               CAR ;
1139
               CAR ;
1140
               SENDER ;
1141
               COMPARE ;
1142
               NEQ ;
1143
               IF { PUSH int 1 ; FAILWITH } {} ;
1144
               SWAP ;
1145
               DUP ;
1146
               DUG 2 ;
1147
               CDR ;
1148
               CDR ;
1149
               SWAP ;
1150
               DUP 3 ;
1151
               CDR ;
1152
               CAR ;
1153
               CDR ;
1154
               CAR ;
1155
               PAIR ;
1156
               DUP 3 ;
1157
               CDR ;
1158
               CAR ;
1159
               CAR ;
1160
               PAIR ;
1161
               PAIR ;
1162
               SWAP ;
1163
               CAR ;
1164
               PAIR ;
1165
               SWAP ;
1166
               PAIR } } }