( begin  ( define  ( ZED*  ZEDnumber1 ZEDnumber2)  ( cond  ( #t ( *  ZEDnumber1 ZEDnumber2) )  ( else  err) ) )  ( define  ( ZED+  ZEDnumber1 ZEDnumber2)  ( cond  ( #t ( +  ZEDnumber1 ZEDnumber2) )  ( else  err) ) )  ( define  ( ZED-  ZEDnumber1 ZEDnumber2)  ( cond  ( #t ( -  ZEDnumber1 ZEDnumbe2) )  ( else  err) ) )  ( define  ( ZED/  ZEDnumber1 ZEDnumber2)  ( cond  ( #t ( /  ZEDnumber1 ZEDnumber2) )  ( else  err) ) )  ( define  ( ZED=  value1 value2)  ( cond  ( #t ( eqv?  value1 value2) )  ( else  err) ) )  ( define  ( ZEDadd- between!  item list  collect)  ( cond  ( ( null?  list )  collect)  ( ( null?  ( cdr  list ) )  ( cons  ( car  list )  collect) )  ( #t ( ZEDadd- between!  item ( cdr  list )  ( cons  item ( cons  ( car  list )  collect) ) ) )  ( else  err) ) )  ( define  ( ZEDadd- between item list )  ( cond  ( #t ( reverse  ( ZEDadd- between!  item list  ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDadd- between- ra list  item)  ( cond  ( #t ( reverse  ( ZEDadd- between!  item list  ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDalpha)  ( cond  ( #t ( ZEDwrite- all ( ZEDrd ( quote  ( ) )  append  ( ZEDrd ( quote  ( ) )  append  ( ZEDnewlines ( ZEDby- four ( ZEDfunction- sort ( ZEDsentences ( ZEDleading- newline  ( ZEDspace- newline  ( ZEDtab- replace ( ZEDnewline- space- tab- repeats ( ZEDnewline- space ( ZEDfilter ZEDnot- return ? ( ZEDreplace- trailing- white- space ( ZEDread- all) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDapplication? expression)  ( cond  ( #t ( and  ( not  ( null?  expression) )  ( pair?  ( car  expression) )  ( null?  ( cdar expression) ) ) )  ( else  err) ) )  ( define  ( ZEDarity arity- hash function)  ( cond  ( #t ( cdr  ( assoc  function arity- hash) ) )  ( else  err) ) )  ( define  ( ZEDarity- hash!  clause)  ( cond  ( #t ( cons  ( ZEDclause- name clause)  ( ZEDclause- arity clause) ) )  ( else  err) ) )  ( define  ( ZEDarity- hash program)  ( cond  ( #t ( append  ( map  ZEDarity- hash!  program)  ( append  ( list  ( cons  ( quote  ZED1)  1 )  ( cons  ( quote  ZED! )  1 )  ( cons  ( quote  ZED001)  1 )  ( cons  ( quote  or )  2 )  ( cons  ( quote  and )  2 )  ( cons  ( quote  begin )  2 )  ( cons  ( quote  ZEDc)  2 )  ( cons  ( quote  quote )  1 ) )  ( list  ( cons  ( quote  ZED002)  2 )  ( cons  ( quote  ZED003)  3 )  ( cons  ( quote  ZED004)  4 )  ( cons  ( quote  ZED005)  5 )  ( cons  ( quote  ZED006)  6 )  ( cons  ( quote  ZED007)  7 )  ( cons  ( quote  ZED008)  8 )  ( cons  ( quote  ZED009)  9 )  ( cons  ( quote  ZED010)  10 )  ( cons  ( quote  ZED011)  11 )  ( cons  ( quote  ZED012)  12 )  ( cons  ( quote  ZED013)  13 )  ( cons  ( quote  ZED014)  14 )  ( cons  ( quote  ZED015)  15 )  ( cons  ( quote  ZED016)  16 )  ( cons  ( quote  ZED017)  17 )  ( cons  ( quote  ZED018)  18 )  ( cons  ( quote  ZED019)  19 )  ( cons  ( quote  ZED020)  20 )  ( cons  ( quote  ZED021)  21 )  ( cons  ( quote  ZED022)  22 )  ( cons  ( quote  ZED023)  23 )  ( cons  ( quote  ZED024)  24 )  ( cons  ( quote  ZED025)  25 )  ( cons  ( quote  ZED026)  26 )  ( cons  ( quote  ZED027)  27 )  ( cons  ( quote  ZED028)  28 )  ( cons  ( quote  ZED029)  29 )  ( cons  ( quote  ZED030)  30 )  ( cons  ( quote  ZED031)  31 )  ( cons  ( quote  ZED032)  32 )  ( cons  ( quote  ZED033)  33 )  ( cons  ( quote  ZED034)  34 )  ( cons  ( quote  ZED035)  35 )  ( cons  ( quote  ZED036)  36 )  ( cons  ( quote  ZED037)  37 )  ( cons  ( quote  ZED038)  38 )  ( cons  ( quote  ZED039)  39 )  ( cons  ( quote  ZED040)  40 )  ( cons  ( quote  ZED041)  41 )  ( cons  ( quote  ZED042)  42 )  ( cons  ( quote  ZED043)  43 )  ( cons  ( quote  ZED044)  44 )  ( cons  ( quote  ZED045)  45 )  ( cons  ( quote  ZED046)  46 )  ( cons  ( quote  ZED047)  47 )  ( cons  ( quote  ZED048)  48 )  ( cons  ( quote  ZED049)  49 )  ( cons  ( quote  ZED050)  50 )  ( cons  ( quote  ZED051)  51 )  ( cons  ( quote  ZED052)  52 )  ( cons  ( quote  ZED053)  53 )  ( cons  ( quote  ZED054)  54 )  ( cons  ( quote  ZED055)  55 )  ( cons  ( quote  ZED056)  56 )  ( cons  ( quote  ZED057)  57 )  ( cons  ( quote  ZED058)  58 )  ( cons  ( quote  ZED059)  59 )  ( cons  ( quote  ZED060)  60 )  ( cons  ( quote  ZED061)  61 )  ( cons  ( quote  ZED062)  62 )  ( cons  ( quote  ZED063)  63 )  ( cons  ( quote  ZED064)  64 )  ( cons  ( quote  ZED065)  65 )  ( cons  ( quote  ZED066)  66 )  ( cons  ( quote  ZED067)  67 )  ( cons  ( quote  ZED068)  68 )  ( cons  ( quote  ZED069)  69 )  ( cons  ( quote  ZED070)  70 )  ( cons  ( quote  ZED071)  71 )  ( cons  ( quote  ZED072)  72 )  ( cons  ( quote  ZED073)  73 )  ( cons  ( quote  ZED074)  74 )  ( cons  ( quote  ZED075)  75 )  ( cons  ( quote  ZED076)  76 )  ( cons  ( quote  ZED077)  77 )  ( cons  ( quote  ZED078)  78 )  ( cons  ( quote  ZED079)  79 )  ( cons  ( quote  ZED080)  80 )  ( cons  ( quote  ZED081)  81 )  ( cons  ( quote  ZED082)  82 )  ( cons  ( quote  ZED083)  83 )  ( cons  ( quote  ZED084)  84 )  ( cons  ( quote  ZED085)  85 )  ( cons  ( quote  ZED086)  86 )  ( cons  ( quote  ZED087)  87 )  ( cons  ( quote  ZED088)  88 )  ( cons  ( quote  ZED089)  89 )  ( cons  ( quote  ZED090)  90 )  ( cons  ( quote  ZED091)  91 )  ( cons  ( quote  ZED092)  92 )  ( cons  ( quote  ZED093)  93 )  ( cons  ( quote  ZED094)  94 )  ( cons  ( quote  ZED095)  95 )  ( cons  ( quote  ZED096)  96 )  ( cons  ( quote  ZED097)  97 )  ( cons  ( quote  ZED098)  98 )  ( cons  ( quote  ZED099)  99 ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDby- four!  sentences collect)  ( cond  ( ( null?  sentences)  collect)  ( #t ( ZEDby- four!  ( cddddr  sentences)  ( cons  ( list  ( car  sentences)  ( cadr  sentences)  ( caddr  sentences)  ( cadddr sentences) )  collect) ) )  ( else  err) ) )  ( define  ( ZEDby- four sentences)  ( cond  ( #t ( reverse  ( ZEDby- four!  sentences ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDby- three!  sentences collect)  ( cond  ( ( null?  sentences)  collect)  ( #t ( ZEDby- three!  ( cdddr sentences)  ( cons  ( list  ( car  sentences)  ( cadr  sentences)  ( caddr  sentences) )  collect) ) )  ( else  err) ) )  ( define  ( ZEDby- three sentences)  ( cond  ( #t ( reverse  ( ZEDby- three!  sentences ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDcharacter- less? character1 character2)  ( cond  ( #t ( <  ( char-> integer character1)  ( char-> integer character2) ) )  ( else  err) ) )  ( define  ( ZEDclause- arguments clause)  ( cond  ( #t ( cadr  clause) )  ( else  err) ) )  ( define  ( ZEDclause- arguments- agree clause1 clause2)  ( cond  ( ( equal?  ( ZEDclause- arguments clause1)  ( ZEDclause- arguments clause2) )  ( ZEDclause- arguments clause1) )  ( else  err) ) )  ( define  ( ZEDclause- arity clause)  ( cond  ( #t ( length  ( ZEDclause- arguments clause) ) )  ( else  err) ) )  ( define  ( ZEDclause- body clause)  ( cond  ( #t ( cddr clause) )  ( else  err) ) )  ( define  ( ZEDclause- less? clause1 clause2)  ( cond  ( #t ( ZEDsentence- less? ( car  clause1)  ( car  clause2) ) )  ( else  err) ) )  ( define  ( ZEDclause- name clause)  ( cond  ( #t ( car  clause) )  ( else  err) ) )  ( define  ( ZEDclause- name- agree clause1 clause2)  ( cond  ( ( eq?  ( ZEDclause- name clause1)  ( ZEDclause- name clause2) )  ( ZEDclause- name clause1) )  ( else  err) ) )  ( define  ( ZEDcombine- all!  program collect)  ( cond  ( ( null?  program)  collect)  ( ( null?  ( cdr  program) )  ( cons  ( car  program)  collect) )  ( ( eq?  ( ZEDclause- name ( car  program) )  ( ZEDclause- name ( cadr  program) ) )  ( ZEDcombine- all!  ( ZEDcombine- head- clauses program)  collect) )  ( #t ( ZEDcombine- all!  ( cdr  program)  ( cons  ( car  program)  collect) ) )  ( else  err) ) )  ( define  ( ZEDcombine- all program)  ( cond  ( #t ( reverse  ( ZEDcombine- all!  program ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDcombine- clauses clause1 clause2)  ( cond  ( #t ( cons  ( ZEDclause- name- agree clause1 clause2)  ( cons  ( ZEDclause- arguments- agree clause1 clause2)  ( append  ( ZEDclause- body clause1)  ( ZEDclause- body clause2) ) ) ) )  ( else  err) ) )  ( define  ( ZEDcombine- head- clauses program)  ( cond  ( #t ( cons  ( ZEDcombine- clauses ( car  program)  ( cadr  program) )  ( cddr program) ) )  ( else  err) ) )  ( define  ( ZEDcombine- program- clauses program)  ( cond  ( #t ( ZEDcombine- all ( ZEDready- program program) ) )  ( else  err) ) )  ( define  ( ZEDcomp! )  ( cond  ( #t ( ZEDcomp! a ( ZEDcombine- program- clauses ( ZEDby- three ( ZEDread- sentences ( ZEDdiscard- comments ( ZEDfunction- sort ( ZEDsentences ( ZEDleading- newline  ( ZEDspace- newline  ( ZEDtab- replace ( ZEDnewline- space- tab- repeats ( ZEDnewline- space ( ZEDfilter ZEDnot- return ? ( ZEDreplace- trailing- white- space ( ZEDread- all) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDcomp! a combined)  ( cond  ( #t ( ZEDcomp! aa ( ZEDprogramize combined ( ZEDarity- hash combined) ) ) )  ( else  err) ) )  ( define  ( ZEDcomp! aa programized)  ( cond  ( #t ( write  programized) )  ( else  err) ) )  ( define  ( ZEDcomp)  ( cond  ( #t ( ZEDcomp! ) )  ( else  err) ) )  ( define  ( ZEDcondefy!  expressions collect)  ( cond  ( ( null?  expressions)  collect)  ( #t ( ZEDcondefy!  ( cddr expressions)  ( cons  ( append  ( car  expressions)  ( cadr  expressions) )  collect) ) )  ( else  err) ) )  ( define  ( ZEDcondefy expressions)  ( cond  ( #t ( reverse  ( ZEDcondefy!  expressions ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDcons ZEDvalue1 ZEDvalue2)  ( cond  ( #t ( cons  ZEDvalue1 ZEDvalue2) )  ( else  err) ) )  ( define  ( ZEDcount ZEDnumber)  ( cond  ( #t ( cons  ( delay  ZEDnumber)  ( delay  ( ZEDcount ( ZED+  ZEDnumber 1 ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDcount- by ZEDstep ZEDnumber)  ( cond  ( #t ( cons  ( delay  ZEDnumber)  ( delay  ( ZEDcount- by ZEDstep ( ZED+  ZEDnumber ZEDstep) ) ) ) )  ( else  err) ) )  ( define  ( ZEDdelay- wrap expression)  ( cond  ( #t ( list  ( quote  delay )  expression) )  ( else  err) ) )  ( define  ( ZEDdigit? character)  ( cond  ( #t ( or  ( eqv?  #\0  character)  ( eqv?  #\1  character)  ( eqv?  #\2  character)  ( eqv?  #\3  character)  ( eqv?  #\4  character)  ( eqv?  #\5  character)  ( eqv?  #\6  character)  ( eqv?  #\7  character)  ( eqv?  #\8  character)  ( eqv?  #\9  character) ) )  ( else  err) ) )  ( define  ( ZEDdiscard- comments!  program collect)  ( cond  ( ( null?  program)  collect)  ( #t ( ZEDdiscard- comments!  ( cddddr  program)  ( cons  ( cadddr program)  ( cons  ( caddr  program)  ( cons  ( car  program)  collect) ) ) ) )  ( else  err) ) )  ( define  ( ZEDdiscard- comments program)  ( cond  ( #t ( reverse  ( ZEDdiscard- comments!  program ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDdr!  value)  ( cond  ( ( pair?  value)  ( ZEDmp ZEDdr!  ( ZEDfirst 64  value) ) )  ( #t value)  ( else  err) ) )  ( define  ( ZEDdr value)  ( cond  ( #t ( begin  ( display  ( ZEDpr ( ZEDdr!  value) ) )  ( newline )  ( newline )  value) )  ( else  err) ) )  ( define  ( ZEDdrr value)  ( cond  ( #t ( begin  ( display  ( ZEDpr value) )  ( newline )  ( newline )  value) )  ( else  err) ) )  ( define  ( ZEDfalse? noun- list )  ( cond  ( #t ( equal?  noun- list  ( list  #\# #\f  #\a #\l  #\s  #\e ) ) )  ( else  err) ) )  ( define  ( ZEDfi function list )  ( cond  ( ( null?  list )  ( quote  ( ) ) )  ( ( function ( if  ( promise? ( car  list ) )  ( force  ( car  list ) )  ( car  list ) ) )  ( cons  ( delay  ( if  ( promise? ( car  list ) )  ( force  ( car  list ) )  ( car  list ) ) )  ( delay  ( ZEDfi function ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) ) ) )  ( #t ( ZEDfi function ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) )  ( else  err) ) )  ( define  ( ZEDfilter!  predicate list  collect)  ( cond  ( ( null?  list )  collect)  ( ( predicate ( car  list ) )  ( ZEDfilter!  predicate ( cdr  list )  ( cons  ( car  list )  collect) ) )  ( #t ( ZEDfilter!  predicate ( cdr  list )  collect) )  ( else  err) ) )  ( define  ( ZEDfilter predicate list )  ( cond  ( #t ( reverse  ( ZEDfilter!  predicate list  ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDfirst!  integer list  collect)  ( cond  ( ( or  ( zero?  integer)  ( null?  list ) )  ( reverse  collect) )  ( ( not  ( pair?  list ) )  ( reverse  ( cons  list  collect) ) )  ( ( >  integer 0 )  ( ZEDfirst!  ( -  integer 1 )  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) )  ( cons  ( if  ( promise? ( car  list ) )  ( force  ( car  list ) )  ( car  list ) )  collect) ) )  ( else  err) ) )  ( define  ( ZEDfirst integer list )  ( cond  ( ( not  ( pair?  list ) )  list )  ( #t ( ZEDfirst!  integer list  ( quote  ( ) ) ) )  ( else  err) ) )  ( define  ( ZEDflatten!  ZEDlist ZEDsub- list- found? ZEDcollect)  ( cond  ( ( and  ( ZEDnull? ZEDlist)  ( ZEDnot ZEDsub- list- found?) )  ( ZEDreverse ZEDcollect) )  ( ( ZEDnull? ZEDlist)  ( ZEDflatten!  ( ZEDreverse ZEDcollect)  #f ( quote  ( ) ) ) )  ( ( ZEDnot ( ZEDpair? ZEDlist) )  ( ZEDflatten!  ( quote  ( ) )  ZEDsub- list- found? ( ZEDcons ZEDlist ZEDcollect) ) )  ( ( ZEDpair? ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) )  ( ZEDflatten!  ( if  ( promise? ( cdr  ZEDlist) )  ( force  ( cdr  ZEDlist) )  ( cdr  ZEDlist) )  #t ( ZEDcons ( if  ( promise? ( cdr  ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) ) )  ( force  ( cdr  ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) ) )  ( cdr  ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) ) )  ( ZEDcons ( if  ( promise? ( car  ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) ) )  ( force  ( car  ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) ) )  ( car  ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) ) )  ZEDcollect) ) ) )  ( ( ZEDnull? ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) ) )  ( ZEDflatten!  ( if  ( promise? ( cdr  ZEDlist) )  ( force  ( cdr  ZEDlist) )  ( cdr  ZEDlist) )  ZEDsub- list- found? ZEDcollect) )  ( #t ( ZEDflatten!  ( if  ( promise? ( cdr  ZEDlist) )  ( force  ( cdr  ZEDlist) )  ( cdr  ZEDlist) )  ZEDsub- list- found? ( ZEDcons ( if  ( promise? ( car  ZEDlist) )  ( force  ( car  ZEDlist) )  ( car  ZEDlist) )  ZEDcollect) ) )  ( else  err) ) )  ( define  ( ZEDflatten ZEDlist)  ( cond  ( #t ( ZEDflatten!  ZEDlist #f ( quote  ( ) ) ) )  ( else  err) ) )  ( define  ( ZEDfor- each ZEDeffect ZEDlist)  ( cond  ( #t ( for-each  ZEDeffect ZEDlist) )  ( else  err) ) )  ( define  ( ZEDfunction expression)  ( cond  ( #t ( caar  expression) )  ( else  err) ) )  ( define  ( ZEDfunction- sort sentences)  ( cond  ( #t ( ZEDrd ( quote  ( ) )  append  ( ZEDsort ZEDclause- less? ( ZEDby- four sentences) ) ) )  ( else  err) ) )  ( define  ( ZEDfunctionize clause arity- hash)  ( cond  ( #t ( list  ( quote  define )  ( cons  ( ZEDclause- name clause)  ( ZEDclause- arguments clause) )  ( cons  ( quote  cond )  ( append  ( ZEDcondefy ( ZEDmap- with ZEDschemefy ( ZEDclause- body clause)  arity- hash) )  ( list  ( list  ( quote  else )  ( quote  err) ) ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDgather- count?!  candidate)  ( cond  ( #t ( and  ( =  6  ( length  candidate) )  ( eqv?  #\Z ( car  candidate) )  ( eqv?  #\E  ( cadr  candidate) )  ( eqv?  #\D  ( caddr  candidate) )  ( eqv?  #\0  ( cadddr candidate) )  ( ZEDdigit? ( car  ( cddddr  candidate) ) )  ( ZEDdigit? ( cadr  ( cddddr  candidate) ) ) ) )  ( else  err) ) )  ( define  ( ZEDgather- count? symbol)  ( cond  ( #t ( ZEDgather- count?!  ( string-> list  ( symbol-> string  symbol) ) ) )  ( else  err) ) )  ( define  ( ZEDgather- noun sentence)  ( cond  ( ( null?  sentence)  ( quote  ( ) ) )  ( ( eqv?  #\space ( car  sentence) )  ( quote  ( ) ) )  ( #t ( cons  ( car  sentence)  ( ZEDgather- noun ( cdr  sentence) ) ) )  ( else  err) ) )  ( define  ( ZEDgather- verb sentence)  ( cond  ( ( eqv?  #\)  ( car  sentence) )  ( quote  ( ) ) )  ( #t ( cons  ( car  sentence)  ( ZEDgather- verb ( cdr  sentence) ) ) )  ( else  err) ) )  ( define  ( ZEDgr garbage value)  ( cond  ( #t ( begin  ( ZEDdr garbage)  value) )  ( else  err) ) )  ( define  ( ZEDgrr garbage value)  ( cond  ( #t ( begin  ( ZEDdrr garbage)  value) )  ( else  err) ) )  ( define  ( ZEDleading- newline  program)  ( cond  ( ( null?  program)  ( quote  ( ) ) )  ( ( eqv?  #\newline  ( car  program) )  ( cdr  program) )  ( #t program)  ( else  err) ) )  ( define  ( ZEDliteral? literal- list )  ( cond  ( #t ( eqv?  #\" (car literal-list))) (else err))) (define (ZEDmake-ZED ZED-list) (cond ((equal? ZED-list (list #\e  #\r  #\r )) " 'err") ((equal? ZED-list (list #\n  #\i  #\l )) " '( ) ") ((equal? ZED-list (list #\a  #\n  #\d )) " and ") ((equal? ZED-list (list #\o  #\r )) " or ") ((equal? ZED-list (list #\q  #\u  #\o  #\t  #\e )) " quote ") ((equal? ZED-list (list #\s  #\e )) " begin ") (#t (list->string (append (list #\Z  #\E  #\D ) ZED-list))) (else err))) (define (ZEDmake-character noun-list) (cond (#t (list->string (cons #\#  (cons #\\  (cdr noun-list))))) (else err))) (define (ZEDmake-exact exact-list) (cond (#t (list->string (append (list #\#  #\e ) exact-list))) (else err))) (define (ZEDmake-literal literal-list) (cond (#t (list->string (cdr (reverse (cdr (reverse literal-list)))))) (else err))) (define (ZEDmake-number-character noun-list) (cond (#t (list->string (list #\#  #\\  (integer->char (string->number (list->string (cddr noun-list))))))) (else err))) (define (ZEDmap-with! function list extra collect) (cond ((null? list) collect) (#t (ZEDmap-with! function (cdr list) extra (cons (function (car list) extra) collect))) (else err))) (define (ZEDmap-with function list extra) (cond (#t (reverse (ZEDmap-with! function list extra (quote ())))) (else err))) (define (ZEDmerge! comparator list1 list2 collect) (cond ((null? list2) (append (reverse collect) list1)) ((null? list1) (append (reverse collect) list2)) ((comparator (car list2) (car list1)) (ZEDmerge! comparator list1 (cdr list2) (cons (car list2) collect))) (#t (ZEDmerge! comparator (cdr list1) list2 (cons (car list1) collect))) (else err))) (define (ZEDmerge comparator list1 list2) (cond (#t (ZEDmerge! comparator list1 list2 (quote ()))) (else err))) (define (ZEDmp function list) (cond ((null? list) (quote ())) ((pair? list) (cons (delay (function (if (promise? (car list)) (force (car list)) (car list)))) (delay (ZEDmp function (if (promise? (cdr list)) (force (cdr list)) (cdr list)))))) (#t (function list)) (else err))) (define (ZEDnewline-space! program) (cond (#t (cons #\n ewline (ZEDnewline-space!a program))) (else err))) (define (ZEDnewline-space!a program) (cond (#t (ZEDnewline-space!aa program (reverse (ZEDnewline-space!ab program (quote ()))))) (else err))) (define (ZEDnewline-space!aa program transformed) (cond ((equal? program transformed) program) (#t (ZEDnewline-space!a transformed)) (else err))) (define (ZEDnewline-space!ab program collect) (cond ((null? program) collect) ((null? (cdr program)) (cons (car program) collect)) ((and (eqv? #\n ewline (car program)) (or (eqv? #\s pace (cadr program)) (eqv? #\h t (cadr program)))) (ZEDnewline-space!ab (cdr program) collect)) (#t (ZEDnewline-space!ab (cdr program) (cons (car program) collect))) (else err))) (define (ZEDnewline-space program) (cond (#t (ZEDnewline-space! program)) (else err))) (define (ZEDnewline-space-tab-repeats! program collect) (cond ((or (null? program) (null? (cdr program))) (append program collect)) ((and (eqv? #\n ewline (car program)) (eqv? #\n ewline (cadr program))) (ZEDnewline-space-tab-repeats! (cdr program) collect)) ((and (or (eqv? #\s pace (car program)) (eqv? #\h t (car program))) (or (eqv? #\s pace (cadr program)) (eqv? #\h t (cadr program)))) (ZEDnewline-space-tab-repeats! (cdr program) collect)) (#t (ZEDnewline-space-tab-repeats! (cdr program) (cons (car program) collect))) (else err))) (define (ZEDnewline-space-tab-repeats program) (cond (#t (reverse (ZEDnewline-space-tab-repeats! program (quote ())))) (else err))) (define (ZEDnewlines clauses) (cond (#t (ZEDadd-between-ra (ZEDmap-with ZEDadd-between-ra clauses (list #\n ewline)) (list (list #\n ewline #\n ewline)))) (else err))) (define (ZEDnormal-character? noun-list) (cond (#t (eqv? (car noun-list) #\# )) (else err))) (define (ZEDnot ZEDvalue) (cond (#t (not ZEDvalue)) (else err))) (define (ZEDnot-return? character) (cond (#t (not (eqv? #\c r character))) (else err))) (define (ZEDnoun! noun-list number?) (cond (number? (ZEDmake-exact noun-list)) ((ZEDliteral? noun-list) (ZEDmake-literal noun-list)) ((ZEDtrue? noun-list) " #t") ((ZEDfalse? noun-list) " #f") ((ZEDnumber-character? noun-list) (ZEDmake-number-character noun-list)) ((ZEDnormal-character? noun-list) (ZEDmake-character noun-list)) (#t (ZEDmake-ZED noun-list)) (else err))) (define (ZEDnoun noun-list) (cond (#t (ZEDnoun! noun-list (string->number (list->string noun-list)))) (else err))) (define (ZEDnull? ZEDvalue) (cond (#t (null? ZEDvalue)) (else err))) (define (ZEDnumber-character? noun-list) (cond (#t (and (eqv? (car noun-list) #\# ) (eqv? (cadr noun-list) #\0 ) (not (null? (cddr noun-list))))) (else err))) (define (ZEDpair? ZEDvalue) (cond (#t (pair? ZEDvalue)) (else err))) (define (ZEDpop stack) (cond (#t (cdr stack)) (else err))) (define (ZEDpr! value output-string) (cond (#t (begin (display (ZEDpr!a value (quote ())) output-string) (ZEDpr!b output-string (get-output-string output-string)))) (else err))) (define (ZEDpr!a value collect) (cond ((char? value) (ZEDpr!aa (list->string (list #\#  value)) collect)) ((string? value) (ZEDpr!aa (string-append " \""  value "\" " )  collect) )  ( ( symbol?  value)  ( ZEDpr! aa ( symbol-> string  value)  collect) )  ( ( number?  value)  ( ZEDpr! aa ( number-> string  value)  collect) )  ( ( and  ( boolean?  value)  value)  ( ZEDpr! aa "#true"  collect) )  ( ( boolean?  value)  ( ZEDpr! aa "#false"  collect) )  ( ( null?  value)  ( reverse  collect) )  ( #t ( ZEDpr! a ( if  ( promise? ( cdr  value) )  ( force  ( cdr  value) )  ( cdr  value) )  ( cons  ( ZEDpr! a ( if  ( promise? ( car  value) )  ( force  ( car  value) )  ( car  value) )  ( quote  ( ) ) )  collect) ) )  ( else  err) ) )  ( define  ( ZEDpr! aa string  collect)  ( cond  ( ( null?  collect)  string )  ( #t ( reverse  ( cons  string  ( cons  "."  collect) ) ) )  ( else  err) ) )  ( define  ( ZEDpr! b output- string  value)  ( cond  ( #t ( begin  ( close-output-port  output- string )  value) )  ( else  err) ) )  ( define  ( ZEDpr value)  ( cond  ( #t ( ZEDpr!  value ( open- output- string ) ) )  ( else  err) ) )  ( define  ( ZEDprogramize program arity- hash)  ( cond  ( #t ( cons  ( quote  begin )  ( ZEDmap- with ZEDfunctionize program arity- hash) ) )  ( else  err) ) )  ( define  ( ZEDpush object stack)  ( cond  ( #t ( cons  object stack) )  ( else  err) ) )  ( define  ( ZEDrd!  function list )  ( cond  ( ( null?  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) )  ( if  ( promise? ( car  list ) )  ( force  ( car  list ) )  ( car  list ) ) )  ( #t ( ZEDrd!  function ( cons  ( function ( if  ( promise? ( car  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) )  ( force  ( car  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) )  ( car  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) )  ( if  ( promise? ( car  list ) )  ( force  ( car  list ) )  ( car  list ) ) )  ( if  ( promise? ( cdr  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) )  ( force  ( cdr  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) )  ( cdr  ( if  ( promise? ( cdr  list ) )  ( force  ( cdr  list ) )  ( cdr  list ) ) ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDrd final function list )  ( cond  ( #t ( ZEDrd!  function ( cons  final ( reverse  list ) ) ) )  ( else  err) ) )  ( define  ( ZEDread- all!  collect)  ( cond  ( #t ( ZEDread- all! a ( read-char )  collect) )  ( else  err) ) )  ( define  ( ZEDread- all! a character collect)  ( cond  ( ( eof-object?  character)  collect)  ( #t ( ZEDread- all!  ( cons  character collect) ) )  ( else  err) ) )  ( define  ( ZEDread- all)  ( cond  ( #t ( reverse  ( ZEDread- all!  ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDread- sentence! a sentence collect)  ( cond  ( ( null?  sentence)  collect)  ( ( eqv?  #\space ( car  sentence) )  ( ZEDread- sentence! a ( cdr  sentence)  collect) )  ( ( eqv?  #\(  ( car  sentence) )  ( ZEDread- sentence! aa sentence ( ZEDgather- verb ( cdr  sentence) )  collect) )  ( #t ( ZEDread- sentence! ab sentence ( ZEDgather- noun sentence)  collect) )  ( else  err) ) )  ( define  ( ZEDread- sentence! aa sentence gather- verb collect)  ( cond  ( #t ( ZEDread- sentence! a ( ZEDtails ( +  2  ( length  gather- verb) )  sentence)  ( cons  ( ZEDverb gather- verb)  collect) ) )  ( else  err) ) )  ( define  ( ZEDread- sentence! ab sentence gather- noun collect)  ( cond  ( #t ( ZEDread- sentence! a ( ZEDtails ( length  gather- noun)  sentence)  ( cons  ( ZEDnoun gather- noun)  collect) ) )  ( else  err) ) )  ( define  ( ZEDread- sentence! b list  output- string )  ( cond  ( #t ( begin  ( display  list  output- string )  ( ZEDread- sentence! ba output- string  ( get- output- string  output- string ) ) ) )  ( else  err) ) )  ( define  ( ZEDread- sentence! ba output- string  get- output- string )  ( cond  ( #t ( begin  ( close-output-port  output- string )  ( ZEDread- sentence! baa ( open- input- string  get- output- string ) ) ) )  ( else  err) ) )  ( define  ( ZEDread- sentence! baa input- string )  ( cond  ( #t ( ZEDread- sentence! baaa input- string  ( read  input- string ) ) )  ( else  err) ) )  ( define  ( ZEDread- sentence! baaa input- string  answer)  ( cond  ( #t ( begin  ( close-input-port  input- string )  answer) )  ( else  err) ) )  ( define  ( ZEDread- sentence sentence)  ( cond  ( #t ( ZEDread- sentence! b ( reverse  ( ZEDread- sentence! a sentence ( quote  ( ) ) ) )  ( open- output- string ) ) )  ( else  err) ) )  ( define  ( ZEDread- sentences sentences)  ( cond  ( #t ( map  ZEDread- sentence sentences) )  ( else  err) ) )  ( define  ( ZEDready- clause clause)  ( cond  ( #t ( cons  ( caaar clause)  ( cons  ( cdar clause)  ( cdr  clause) ) ) )  ( else  err) ) )  ( define  ( ZEDready- program program)  ( cond  ( #t ( map  ZEDready- clause program) )  ( else  err) ) )  ( define  ( ZEDreplace- trailing- white- space!  program)  ( cond  ( ( null?  program)  ( quote  ( ) ) )  ( ( or  ( eqv?  ( car  program)  #\space)  ( eqv?  ( car  program)  #\ht)  ( eqv?  ( car  program)  #\cr)  ( eqv?  ( car  program)  #\newline ) )  ( ZEDreplace- trailing- white- space!  ( cdr  program) ) )  ( #t ( cons  #\newline  program) )  ( else  err) ) )  ( define  ( ZEDreplace- trailing- white- space program)  ( cond  ( #t ( reverse  ( ZEDreplace- trailing- white- space!  ( reverse  program) ) ) )  ( else  err) ) )  ( define  ( ZEDreverse ZEDlist)  ( cond  ( #t ( reverse  ZEDlist) )  ( else  err) ) )  ( define  ( ZEDschemefy!  expression arity- hash stack)  ( cond  ( ( null?  expression)  ( ZEDtop stack) )  ( ( ZEDapplication? expression)  ( ZEDschemefy! a expression arity- hash stack ( ZEDfunction expression) ) )  ( #t ( ZEDschemefy!  ( cdr  expression)  arity- hash ( ZEDpush ( car  expression)  stack) ) )  ( else  err) ) )  ( define  ( ZEDschemefy! a expression arity- hash stack function)  ( cond  ( #t ( ZEDschemefy! aa expression arity- hash stack function ( ZEDarity arity- hash function) ) )  ( else  err) ) )  ( define  ( ZEDschemefy! aa expression arity- hash stack function arity)  ( cond  ( ( ZEDgather- count? function)  ( ZEDschemefy!  ( cdr  expression)  arity- hash ( ZEDpush ( ZEDfirst arity stack)  ( ZEDtails arity stack) ) ) )  ( ( eq?  function ( quote  ZED1) )  ( ZEDschemefy!  ( cdr  expression)  arity- hash ( ZEDpush ( list  ( quote  if )  ( list  ( quote  promise?)  ( cons  ( quote  car )  ( ZEDfirst arity stack) ) )  ( list  ( quote  force )  ( cons  ( quote  car )  ( ZEDfirst arity stack) ) )  ( cons  ( quote  car )  ( ZEDfirst arity stack) ) )  ( ZEDtails arity stack) ) ) )  ( ( eq?  function ( quote  ZED! ) )  ( ZEDschemefy!  ( cdr  expression)  arity- hash ( ZEDpush ( list  ( quote  if )  ( list  ( quote  promise?)  ( cons  ( quote  cdr )  ( ZEDfirst arity stack) ) )  ( list  ( quote  force )  ( cons  ( quote  cdr )  ( ZEDfirst arity stack) ) )  ( cons  ( quote  cdr )  ( ZEDfirst arity stack) ) )  ( ZEDtails arity stack) ) ) )  ( ( eq?  function ( quote  ZEDc) )  ( ZEDschemefy!  ( cdr  expression)  arity- hash ( ZEDpush ( cons  ( quote  cons )  ( map  ZEDdelay- wrap ( ZEDfirst arity stack) ) )  ( ZEDtails arity stack) ) ) )  ( #t ( ZEDschemefy!  ( cdr  expression)  arity- hash ( ZEDpush ( cons  function ( ZEDfirst arity stack) )  ( ZEDtails arity stack) ) ) )  ( else  err) ) )  ( define  ( ZEDschemefy expression arity- hash)  ( cond  ( #t ( list  ( ZEDschemefy!  ( reverse  expression)  arity- hash ( ZEDstack) ) ) )  ( else  err) ) )  ( define  ( ZEDsentence- less? sentence1 sentence2)  ( cond  ( ( null?  sentence2)  #f)  ( ( null?  sentence1)  #t)  ( ( ZEDcharacter- less? ( car  sentence1)  ( car  sentence2) )  #t)  ( ( ZEDcharacter- less? ( car  sentence2)  ( car  sentence1) )  #f)  ( #t ( ZEDsentence- less? ( cdr  sentence1)  ( cdr  sentence2) ) )  ( else  err) ) )  ( define  ( ZEDsentences!  program collect1 collect2)  ( cond  ( ( null?  program)  collect2)  ( ( eqv?  #\newline  ( car  program) )  ( ZEDsentences!  ( cdr  program)  ( quote  ( ) )  ( cons  ( reverse  collect1)  collect2) ) )  ( #t ( ZEDsentences!  ( cdr  program)  ( cons  ( car  program)  collect1)  collect2) )  ( else  err) ) )  ( define  ( ZEDsentences program)  ( cond  ( #t ( reverse  ( ZEDsentences!  program ( quote  ( ) )  ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDsort! a jumble)  ( cond  ( #t ( map  list  jumble) )  ( else  err) ) )  ( define  ( ZEDsort! b comparator jumble)  ( cond  ( ( null?  jumble)  ( quote  ( ) ) )  ( ( null?  ( cdr  jumble) )  jumble)  ( #t ( ZEDsort! b comparator ( cons  ( ZEDmerge comparator ( car  jumble)  ( cadr  jumble) )  ( ZEDsort! b comparator ( cddr jumble) ) ) ) )  ( else  err) ) )  ( define  ( ZEDsort comparator jumble)  ( cond  ( #t ( car  ( ZEDsort! b comparator ( ZEDsort! a jumble) ) ) )  ( else  err) ) )  ( define  ( ZEDspace- newline !  program collect)  ( cond  ( ( or  ( null?  program)  ( null?  ( cdr  program) ) )  ( append  program collect) )  ( ( and  ( eqv?  #\space ( car  program) )  ( eqv?  #\newline  ( cadr  program) ) )  ( ZEDspace- newline !  ( cdr  program)  collect) )  ( #t ( ZEDspace- newline !  ( cdr  program)  ( cons  ( car  program)  collect) ) )  ( else  err) ) )  ( define  ( ZEDspace- newline  program)  ( cond  ( #t ( reverse  ( ZEDspace- newline !  program ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDstack)  ( cond  ( #t ( quote  ( ) ) )  ( else  err) ) )  ( define  ( ZEDtab- replace!  program collect)  ( cond  ( ( null?  program)  collect)  ( ( eqv?  #\ht ( car  program) )  ( ZEDtab- replace!  ( cdr  program)  ( cons  #\space collect) ) )  ( #t ( ZEDtab- replace!  ( cdr  program)  ( cons  ( car  program)  collect) ) )  ( else  err) ) )  ( define  ( ZEDtab- replace program)  ( cond  ( #t ( reverse  ( ZEDtab- replace!  program ( quote  ( ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDtails number list )  ( cond  ( ( null?  list )  ( quote  ( ) ) )  ( ( zero?  number)  list )  ( ( >  number 0 )  ( ZEDtails ( -  number 1 )  ( cdr  list ) ) )  ( else  err) ) )  ( define  ( ZEDtop stack)  ( cond  ( #t ( car  stack) )  ( else  err) ) )  ( define  ( ZEDtrue? noun- list )  ( cond  ( #t ( equal?  noun- list  ( list  #\# #\t  #\r #\u #\e ) ) )  ( else  err) ) )  ( define  ( ZEDverb verb- list )  ( cond  ( ( ZEDliteral? verb- list )  ( list  ( ZEDmake- literal verb- list ) ) )  ( #t ( list  ( ZEDmake- ZED verb- list ) ) )  ( else  err) ) )  ( define  ( ZEDwrite- all program)  ( cond  ( ( null?  program)  ( quote  err) )  ( #t ( ZEDwrite- all ( begin  ( write-char  ( car  program) )  ( cdr  program) ) ) )  ( else  err) ) )  ( define  ( ZEDzed-> scheme!  value collect)  ( cond  ( ( null?  value)  ( reverse  collect) )  ( #t ( ZEDzed-> scheme!  ( if  ( promise? ( cdr  value) )  ( force  ( cdr  value) )  ( cdr  value) )  ( cons  ( ZEDzed-> scheme ( if  ( promise? ( car  value) )  ( force  ( car  value) )  ( car  value) ) )  collect) ) )  ( else  err) ) )  ( define  ( ZEDzed-> scheme value)  ( cond  ( ( not  ( pair?  value) )  value)  ( #t ( ZEDzed-> scheme!  value ( quote  ( ) ) ) )  ( else  err) ) ) ) 
( ZEDcomp) 
KGJlZ2luIChkZWZpbmUgKFpFRCogWkVEbnVtYmVyMSBaRURudW1iZXIyKSAoY29uZCAoI3QgKCogWkVEbnVtYmVyMSBaRURudW1iZXIyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRCsgWkVEbnVtYmVyMSBaRURudW1iZXIyKSAoY29uZCAoI3QgKCsgWkVEbnVtYmVyMSBaRURudW1iZXIyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRC0gWkVEbnVtYmVyMSBaRURudW1iZXIyKSAoY29uZCAoI3QgKC0gWkVEbnVtYmVyMSBaRURudW1iZTIpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVELyBaRURudW1iZXIxIFpFRG51bWJlcjIpIChjb25kICgjdCAoLyBaRURudW1iZXIxIFpFRG51bWJlcjIpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEPSB2YWx1ZTEgdmFsdWUyKSAoY29uZCAoI3QgKGVxdj8gdmFsdWUxIHZhbHVlMikpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURhZGQtYmV0d2VlbiEgaXRlbSBsaXN0IGNvbGxlY3QpIChjb25kICgobnVsbD8gbGlzdCkgY29sbGVjdCkgKChudWxsPyAoY2RyIGxpc3QpKSAoY29ucyAoY2FyIGxpc3QpIGNvbGxlY3QpKSAoI3QgKFpFRGFkZC1iZXR3ZWVuISBpdGVtIChjZHIgbGlzdCkgKGNvbnMgaXRlbSAoY29ucyAoY2FyIGxpc3QpIGNvbGxlY3QpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURhZGQtYmV0d2VlbiBpdGVtIGxpc3QpIChjb25kICgjdCAocmV2ZXJzZSAoWkVEYWRkLWJldHdlZW4hIGl0ZW0gbGlzdCAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURhZGQtYmV0d2Vlbi1yYSBsaXN0IGl0ZW0pIChjb25kICgjdCAocmV2ZXJzZSAoWkVEYWRkLWJldHdlZW4hIGl0ZW0gbGlzdCAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURhbHBoYSkgKGNvbmQgKCN0IChaRUR3cml0ZS1hbGwgKFpFRHJkIChxdW90ZSAoKSkgYXBwZW5kIChaRURyZCAocXVvdGUgKCkpIGFwcGVuZCAoWkVEbmV3bGluZXMgKFpFRGJ5LWZvdXIgKFpFRGZ1bmN0aW9uLXNvcnQgKFpFRHNlbnRlbmNlcyAoWkVEbGVhZGluZy1uZXdsaW5lIChaRURzcGFjZS1uZXdsaW5lIChaRUR0YWItcmVwbGFjZSAoWkVEbmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyAoWkVEbmV3bGluZS1zcGFjZSAoWkVEZmlsdGVyIFpFRG5vdC1yZXR1cm4/IChaRURyZXBsYWNlLXRyYWlsaW5nLXdoaXRlLXNwYWNlIChaRURyZWFkLWFsbCkpKSkpKSkpKSkpKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGFwcGxpY2F0aW9uPyBleHByZXNzaW9uKSAoY29uZCAoI3QgKGFuZCAobm90IChudWxsPyBleHByZXNzaW9uKSkgKHBhaXI/IChjYXIgZXhwcmVzc2lvbikpIChudWxsPyAoY2RhciBleHByZXNzaW9uKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYXJpdHkgYXJpdHktaGFzaCBmdW5jdGlvbikgKGNvbmQgKCN0IChjZHIgKGFzc29jIGZ1bmN0aW9uIGFyaXR5LWhhc2gpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGFyaXR5LWhhc2ghIGNsYXVzZSkgKGNvbmQgKCN0IChjb25zIChaRURjbGF1c2UtbmFtZSBjbGF1c2UpIChaRURjbGF1c2UtYXJpdHkgY2xhdXNlKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURhcml0eS1oYXNoIHByb2dyYW0pIChjb25kICgjdCAoYXBwZW5kIChtYXAgWkVEYXJpdHktaGFzaCEgcHJvZ3JhbSkgKGFwcGVuZCAobGlzdCAoY29ucyAocXVvdGUgWkVEMSkgMSkgKGNvbnMgKHF1b3RlIFpFRCEpIDEpIChjb25zIChxdW90ZSBaRUQwMDEpIDEpIChjb25zIChxdW90ZSBvcikgMikgKGNvbnMgKHF1b3RlIGFuZCkgMikgKGNvbnMgKHF1b3RlIGJlZ2luKSAyKSAoY29ucyAocXVvdGUgWkVEYykgMikgKGNvbnMgKHF1b3RlIHF1b3RlKSAxKSkgKGxpc3QgKGNvbnMgKHF1b3RlIFpFRDAwMikgMikgKGNvbnMgKHF1b3RlIFpFRDAwMykgMykgKGNvbnMgKHF1b3RlIFpFRDAwNCkgNCkgKGNvbnMgKHF1b3RlIFpFRDAwNSkgNSkgKGNvbnMgKHF1b3RlIFpFRDAwNikgNikgKGNvbnMgKHF1b3RlIFpFRDAwNykgNykgKGNvbnMgKHF1b3RlIFpFRDAwOCkgOCkgKGNvbnMgKHF1b3RlIFpFRDAwOSkgOSkgKGNvbnMgKHF1b3RlIFpFRDAxMCkgMTApIChjb25zIChxdW90ZSBaRUQwMTEpIDExKSAoY29ucyAocXVvdGUgWkVEMDEyKSAxMikgKGNvbnMgKHF1b3RlIFpFRDAxMykgMTMpIChjb25zIChxdW90ZSBaRUQwMTQpIDE0KSAoY29ucyAocXVvdGUgWkVEMDE1KSAxNSkgKGNvbnMgKHF1b3RlIFpFRDAxNikgMTYpIChjb25zIChxdW90ZSBaRUQwMTcpIDE3KSAoY29ucyAocXVvdGUgWkVEMDE4KSAxOCkgKGNvbnMgKHF1b3RlIFpFRDAxOSkgMTkpIChjb25zIChxdW90ZSBaRUQwMjApIDIwKSAoY29ucyAocXVvdGUgWkVEMDIxKSAyMSkgKGNvbnMgKHF1b3RlIFpFRDAyMikgMjIpIChjb25zIChxdW90ZSBaRUQwMjMpIDIzKSAoY29ucyAocXVvdGUgWkVEMDI0KSAyNCkgKGNvbnMgKHF1b3RlIFpFRDAyNSkgMjUpIChjb25zIChxdW90ZSBaRUQwMjYpIDI2KSAoY29ucyAocXVvdGUgWkVEMDI3KSAyNykgKGNvbnMgKHF1b3RlIFpFRDAyOCkgMjgpIChjb25zIChxdW90ZSBaRUQwMjkpIDI5KSAoY29ucyAocXVvdGUgWkVEMDMwKSAzMCkgKGNvbnMgKHF1b3RlIFpFRDAzMSkgMzEpIChjb25zIChxdW90ZSBaRUQwMzIpIDMyKSAoY29ucyAocXVvdGUgWkVEMDMzKSAzMykgKGNvbnMgKHF1b3RlIFpFRDAzNCkgMzQpIChjb25zIChxdW90ZSBaRUQwMzUpIDM1KSAoY29ucyAocXVvdGUgWkVEMDM2KSAzNikgKGNvbnMgKHF1b3RlIFpFRDAzNykgMzcpIChjb25zIChxdW90ZSBaRUQwMzgpIDM4KSAoY29ucyAocXVvdGUgWkVEMDM5KSAzOSkgKGNvbnMgKHF1b3RlIFpFRDA0MCkgNDApIChjb25zIChxdW90ZSBaRUQwNDEpIDQxKSAoY29ucyAocXVvdGUgWkVEMDQyKSA0MikgKGNvbnMgKHF1b3RlIFpFRDA0MykgNDMpIChjb25zIChxdW90ZSBaRUQwNDQpIDQ0KSAoY29ucyAocXVvdGUgWkVEMDQ1KSA0NSkgKGNvbnMgKHF1b3RlIFpFRDA0NikgNDYpIChjb25zIChxdW90ZSBaRUQwNDcpIDQ3KSAoY29ucyAocXVvdGUgWkVEMDQ4KSA0OCkgKGNvbnMgKHF1b3RlIFpFRDA0OSkgNDkpIChjb25zIChxdW90ZSBaRUQwNTApIDUwKSAoY29ucyAocXVvdGUgWkVEMDUxKSA1MSkgKGNvbnMgKHF1b3RlIFpFRDA1MikgNTIpIChjb25zIChxdW90ZSBaRUQwNTMpIDUzKSAoY29ucyAocXVvdGUgWkVEMDU0KSA1NCkgKGNvbnMgKHF1b3RlIFpFRDA1NSkgNTUpIChjb25zIChxdW90ZSBaRUQwNTYpIDU2KSAoY29ucyAocXVvdGUgWkVEMDU3KSA1NykgKGNvbnMgKHF1b3RlIFpFRDA1OCkgNTgpIChjb25zIChxdW90ZSBaRUQwNTkpIDU5KSAoY29ucyAocXVvdGUgWkVEMDYwKSA2MCkgKGNvbnMgKHF1b3RlIFpFRDA2MSkgNjEpIChjb25zIChxdW90ZSBaRUQwNjIpIDYyKSAoY29ucyAocXVvdGUgWkVEMDYzKSA2MykgKGNvbnMgKHF1b3RlIFpFRDA2NCkgNjQpIChjb25zIChxdW90ZSBaRUQwNjUpIDY1KSAoY29ucyAocXVvdGUgWkVEMDY2KSA2NikgKGNvbnMgKHF1b3RlIFpFRDA2NykgNjcpIChjb25zIChxdW90ZSBaRUQwNjgpIDY4KSAoY29ucyAocXVvdGUgWkVEMDY5KSA2OSkgKGNvbnMgKHF1b3RlIFpFRDA3MCkgNzApIChjb25zIChxdW90ZSBaRUQwNzEpIDcxKSAoY29ucyAocXVvdGUgWkVEMDcyKSA3MikgKGNvbnMgKHF1b3RlIFpFRDA3MykgNzMpIChjb25zIChxdW90ZSBaRUQwNzQpIDc0KSAoY29ucyAocXVvdGUgWkVEMDc1KSA3NSkgKGNvbnMgKHF1b3RlIFpFRDA3NikgNzYpIChjb25zIChxdW90ZSBaRUQwNzcpIDc3KSAoY29ucyAocXVvdGUgWkVEMDc4KSA3OCkgKGNvbnMgKHF1b3RlIFpFRDA3OSkgNzkpIChjb25zIChxdW90ZSBaRUQwODApIDgwKSAoY29ucyAocXVvdGUgWkVEMDgxKSA4MSkgKGNvbnMgKHF1b3RlIFpFRDA4MikgODIpIChjb25zIChxdW90ZSBaRUQwODMpIDgzKSAoY29ucyAocXVvdGUgWkVEMDg0KSA4NCkgKGNvbnMgKHF1b3RlIFpFRDA4NSkgODUpIChjb25zIChxdW90ZSBaRUQwODYpIDg2KSAoY29ucyAocXVvdGUgWkVEMDg3KSA4NykgKGNvbnMgKHF1b3RlIFpFRDA4OCkgODgpIChjb25zIChxdW90ZSBaRUQwODkpIDg5KSAoY29ucyAocXVvdGUgWkVEMDkwKSA5MCkgKGNvbnMgKHF1b3RlIFpFRDA5MSkgOTEpIChjb25zIChxdW90ZSBaRUQwOTIpIDkyKSAoY29ucyAocXVvdGUgWkVEMDkzKSA5MykgKGNvbnMgKHF1b3RlIFpFRDA5NCkgOTQpIChjb25zIChxdW90ZSBaRUQwOTUpIDk1KSAoY29ucyAocXVvdGUgWkVEMDk2KSA5NikgKGNvbnMgKHF1b3RlIFpFRDA5NykgOTcpIChjb25zIChxdW90ZSBaRUQwOTgpIDk4KSAoY29ucyAocXVvdGUgWkVEMDk5KSA5OSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURieS1mb3VyISBzZW50ZW5jZXMgY29sbGVjdCkgKGNvbmQgKChudWxsPyBzZW50ZW5jZXMpIGNvbGxlY3QpICgjdCAoWkVEYnktZm91ciEgKGNkZGRkciBzZW50ZW5jZXMpIChjb25zIChsaXN0IChjYXIgc2VudGVuY2VzKSAoY2FkciBzZW50ZW5jZXMpIChjYWRkciBzZW50ZW5jZXMpIChjYWRkZHIgc2VudGVuY2VzKSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYnktZm91ciBzZW50ZW5jZXMpIChjb25kICgjdCAocmV2ZXJzZSAoWkVEYnktZm91ciEgc2VudGVuY2VzIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGJ5LXRocmVlISBzZW50ZW5jZXMgY29sbGVjdCkgKGNvbmQgKChudWxsPyBzZW50ZW5jZXMpIGNvbGxlY3QpICgjdCAoWkVEYnktdGhyZWUhIChjZGRkciBzZW50ZW5jZXMpIChjb25zIChsaXN0IChjYXIgc2VudGVuY2VzKSAoY2FkciBzZW50ZW5jZXMpIChjYWRkciBzZW50ZW5jZXMpKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURieS10aHJlZSBzZW50ZW5jZXMpIChjb25kICgjdCAocmV2ZXJzZSAoWkVEYnktdGhyZWUhIHNlbnRlbmNlcyAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjaGFyYWN0ZXItbGVzcz8gY2hhcmFjdGVyMSBjaGFyYWN0ZXIyKSAoY29uZCAoI3QgKDwgKGNoYXItPmludGVnZXIgY2hhcmFjdGVyMSkgKGNoYXItPmludGVnZXIgY2hhcmFjdGVyMikpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY2xhdXNlLWFyZ3VtZW50cyBjbGF1c2UpIChjb25kICgjdCAoY2FkciBjbGF1c2UpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY2xhdXNlLWFyZ3VtZW50cy1hZ3JlZSBjbGF1c2UxIGNsYXVzZTIpIChjb25kICgoZXF1YWw/IChaRURjbGF1c2UtYXJndW1lbnRzIGNsYXVzZTEpIChaRURjbGF1c2UtYXJndW1lbnRzIGNsYXVzZTIpKSAoWkVEY2xhdXNlLWFyZ3VtZW50cyBjbGF1c2UxKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNsYXVzZS1hcml0eSBjbGF1c2UpIChjb25kICgjdCAobGVuZ3RoIChaRURjbGF1c2UtYXJndW1lbnRzIGNsYXVzZSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY2xhdXNlLWJvZHkgY2xhdXNlKSAoY29uZCAoI3QgKGNkZHIgY2xhdXNlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNsYXVzZS1sZXNzPyBjbGF1c2UxIGNsYXVzZTIpIChjb25kICgjdCAoWkVEc2VudGVuY2UtbGVzcz8gKGNhciBjbGF1c2UxKSAoY2FyIGNsYXVzZTIpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNsYXVzZS1uYW1lIGNsYXVzZSkgKGNvbmQgKCN0IChjYXIgY2xhdXNlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNsYXVzZS1uYW1lLWFncmVlIGNsYXVzZTEgY2xhdXNlMikgKGNvbmQgKChlcT8gKFpFRGNsYXVzZS1uYW1lIGNsYXVzZTEpIChaRURjbGF1c2UtbmFtZSBjbGF1c2UyKSkgKFpFRGNsYXVzZS1uYW1lIGNsYXVzZTEpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29tYmluZS1hbGwhIHByb2dyYW0gY29sbGVjdCkgKGNvbmQgKChudWxsPyBwcm9ncmFtKSBjb2xsZWN0KSAoKG51bGw/IChjZHIgcHJvZ3JhbSkpIChjb25zIChjYXIgcHJvZ3JhbSkgY29sbGVjdCkpICgoZXE/IChaRURjbGF1c2UtbmFtZSAoY2FyIHByb2dyYW0pKSAoWkVEY2xhdXNlLW5hbWUgKGNhZHIgcHJvZ3JhbSkpKSAoWkVEY29tYmluZS1hbGwhIChaRURjb21iaW5lLWhlYWQtY2xhdXNlcyBwcm9ncmFtKSBjb2xsZWN0KSkgKCN0IChaRURjb21iaW5lLWFsbCEgKGNkciBwcm9ncmFtKSAoY29ucyAoY2FyIHByb2dyYW0pIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbWJpbmUtYWxsIHByb2dyYW0pIChjb25kICgjdCAocmV2ZXJzZSAoWkVEY29tYmluZS1hbGwhIHByb2dyYW0gKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29tYmluZS1jbGF1c2VzIGNsYXVzZTEgY2xhdXNlMikgKGNvbmQgKCN0IChjb25zIChaRURjbGF1c2UtbmFtZS1hZ3JlZSBjbGF1c2UxIGNsYXVzZTIpIChjb25zIChaRURjbGF1c2UtYXJndW1lbnRzLWFncmVlIGNsYXVzZTEgY2xhdXNlMikgKGFwcGVuZCAoWkVEY2xhdXNlLWJvZHkgY2xhdXNlMSkgKFpFRGNsYXVzZS1ib2R5IGNsYXVzZTIpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29tYmluZS1oZWFkLWNsYXVzZXMgcHJvZ3JhbSkgKGNvbmQgKCN0IChjb25zIChaRURjb21iaW5lLWNsYXVzZXMgKGNhciBwcm9ncmFtKSAoY2FkciBwcm9ncmFtKSkgKGNkZHIgcHJvZ3JhbSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29tYmluZS1wcm9ncmFtLWNsYXVzZXMgcHJvZ3JhbSkgKGNvbmQgKCN0IChaRURjb21iaW5lLWFsbCAoWkVEcmVhZHktcHJvZ3JhbSBwcm9ncmFtKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb21wISkgKGNvbmQgKCN0IChaRURjb21wIWEgKFpFRGNvbWJpbmUtcHJvZ3JhbS1jbGF1c2VzIChaRURieS10aHJlZSAoWkVEcmVhZC1zZW50ZW5jZXMgKFpFRGRpc2NhcmQtY29tbWVudHMgKFpFRGZ1bmN0aW9uLXNvcnQgKFpFRHNlbnRlbmNlcyAoWkVEbGVhZGluZy1uZXdsaW5lIChaRURzcGFjZS1uZXdsaW5lIChaRUR0YWItcmVwbGFjZSAoWkVEbmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyAoWkVEbmV3bGluZS1zcGFjZSAoWkVEZmlsdGVyIFpFRG5vdC1yZXR1cm4/IChaRURyZXBsYWNlLXRyYWlsaW5nLXdoaXRlLXNwYWNlIChaRURyZWFkLWFsbCkpKSkpKSkpKSkpKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbXAhYSBjb21iaW5lZCkgKGNvbmQgKCN0IChaRURjb21wIWFhIChaRURwcm9ncmFtaXplIGNvbWJpbmVkIChaRURhcml0eS1oYXNoIGNvbWJpbmVkKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29tcCFhYSBwcm9ncmFtaXplZCkgKGNvbmQgKCN0ICh3cml0ZSBwcm9ncmFtaXplZCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb21wKSAoY29uZCAoI3QgKFpFRGNvbXAhKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbmRlZnkhIGV4cHJlc3Npb25zIGNvbGxlY3QpIChjb25kICgobnVsbD8gZXhwcmVzc2lvbnMpIGNvbGxlY3QpICgjdCAoWkVEY29uZGVmeSEgKGNkZHIgZXhwcmVzc2lvbnMpIChjb25zIChhcHBlbmQgKGNhciBleHByZXNzaW9ucykgKGNhZHIgZXhwcmVzc2lvbnMpKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb25kZWZ5IGV4cHJlc3Npb25zKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRGNvbmRlZnkhIGV4cHJlc3Npb25zIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbnMgWkVEdmFsdWUxIFpFRHZhbHVlMikgKGNvbmQgKCN0IChjb25zIFpFRHZhbHVlMSBaRUR2YWx1ZTIpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY291bnQgWkVEbnVtYmVyKSAoY29uZCAoI3QgKGNvbnMgKGRlbGF5IFpFRG51bWJlcikgKGRlbGF5IChaRURjb3VudCAoWkVEKyBaRURudW1iZXIgMSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb3VudC1ieSBaRURzdGVwIFpFRG51bWJlcikgKGNvbmQgKCN0IChjb25zIChkZWxheSBaRURudW1iZXIpIChkZWxheSAoWkVEY291bnQtYnkgWkVEc3RlcCAoWkVEKyBaRURudW1iZXIgWkVEc3RlcCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURkZWxheS13cmFwIGV4cHJlc3Npb24pIChjb25kICgjdCAobGlzdCAocXVvdGUgZGVsYXkpIGV4cHJlc3Npb24pKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZGlnaXQ/IGNoYXJhY3RlcikgKGNvbmQgKCN0IChvciAoZXF2PyAjXDAgY2hhcmFjdGVyKSAoZXF2PyAjXDEgY2hhcmFjdGVyKSAoZXF2PyAjXDIgY2hhcmFjdGVyKSAoZXF2PyAjXDMgY2hhcmFjdGVyKSAoZXF2PyAjXDQgY2hhcmFjdGVyKSAoZXF2PyAjXDUgY2hhcmFjdGVyKSAoZXF2PyAjXDYgY2hhcmFjdGVyKSAoZXF2PyAjXDcgY2hhcmFjdGVyKSAoZXF2PyAjXDggY2hhcmFjdGVyKSAoZXF2PyAjXDkgY2hhcmFjdGVyKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURkaXNjYXJkLWNvbW1lbnRzISBwcm9ncmFtIGNvbGxlY3QpIChjb25kICgobnVsbD8gcHJvZ3JhbSkgY29sbGVjdCkgKCN0IChaRURkaXNjYXJkLWNvbW1lbnRzISAoY2RkZGRyIHByb2dyYW0pIChjb25zIChjYWRkZHIgcHJvZ3JhbSkgKGNvbnMgKGNhZGRyIHByb2dyYW0pIChjb25zIChjYXIgcHJvZ3JhbSkgY29sbGVjdCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURkaXNjYXJkLWNvbW1lbnRzIHByb2dyYW0pIChjb25kICgjdCAocmV2ZXJzZSAoWkVEZGlzY2FyZC1jb21tZW50cyEgcHJvZ3JhbSAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURkciEgdmFsdWUpIChjb25kICgocGFpcj8gdmFsdWUpIChaRURtcCBaRURkciEgKFpFRGZpcnN0IDY0IHZhbHVlKSkpICgjdCB2YWx1ZSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGRyIHZhbHVlKSAoY29uZCAoI3QgKGJlZ2luIChkaXNwbGF5IChaRURwciAoWkVEZHIhIHZhbHVlKSkpIChuZXdsaW5lKSAobmV3bGluZSkgdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZHJyIHZhbHVlKSAoY29uZCAoI3QgKGJlZ2luIChkaXNwbGF5IChaRURwciB2YWx1ZSkpIChuZXdsaW5lKSAobmV3bGluZSkgdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZmFsc2U/IG5vdW4tbGlzdCkgKGNvbmQgKCN0IChlcXVhbD8gbm91bi1saXN0IChsaXN0ICNcIyAjXGYgI1xhICNcbCAjXHMgI1xlKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmaSBmdW5jdGlvbiBsaXN0KSAoY29uZCAoKG51bGw/IGxpc3QpIChxdW90ZSAoKSkpICgoZnVuY3Rpb24gKGlmIChwcm9taXNlPyAoY2FyIGxpc3QpKSAoZm9yY2UgKGNhciBsaXN0KSkgKGNhciBsaXN0KSkpIChjb25zIChkZWxheSAoaWYgKHByb21pc2U/IChjYXIgbGlzdCkpIChmb3JjZSAoY2FyIGxpc3QpKSAoY2FyIGxpc3QpKSkgKGRlbGF5IChaRURmaSBmdW5jdGlvbiAoaWYgKHByb21pc2U/IChjZHIgbGlzdCkpIChmb3JjZSAoY2RyIGxpc3QpKSAoY2RyIGxpc3QpKSkpKSkgKCN0IChaRURmaSBmdW5jdGlvbiAoaWYgKHByb21pc2U/IChjZHIgbGlzdCkpIChmb3JjZSAoY2RyIGxpc3QpKSAoY2RyIGxpc3QpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmaWx0ZXIhIHByZWRpY2F0ZSBsaXN0IGNvbGxlY3QpIChjb25kICgobnVsbD8gbGlzdCkgY29sbGVjdCkgKChwcmVkaWNhdGUgKGNhciBsaXN0KSkgKFpFRGZpbHRlciEgcHJlZGljYXRlIChjZHIgbGlzdCkgKGNvbnMgKGNhciBsaXN0KSBjb2xsZWN0KSkpICgjdCAoWkVEZmlsdGVyISBwcmVkaWNhdGUgKGNkciBsaXN0KSBjb2xsZWN0KSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGZpbHRlciBwcmVkaWNhdGUgbGlzdCkgKGNvbmQgKCN0IChyZXZlcnNlIChaRURmaWx0ZXIhIHByZWRpY2F0ZSBsaXN0IChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGZpcnN0ISBpbnRlZ2VyIGxpc3QgY29sbGVjdCkgKGNvbmQgKChvciAoemVybz8gaW50ZWdlcikgKG51bGw/IGxpc3QpKSAocmV2ZXJzZSBjb2xsZWN0KSkgKChub3QgKHBhaXI/IGxpc3QpKSAocmV2ZXJzZSAoY29ucyBsaXN0IGNvbGxlY3QpKSkgKCg+IGludGVnZXIgMCkgKFpFRGZpcnN0ISAoLSBpbnRlZ2VyIDEpIChpZiAocHJvbWlzZT8gKGNkciBsaXN0KSkgKGZvcmNlIChjZHIgbGlzdCkpIChjZHIgbGlzdCkpIChjb25zIChpZiAocHJvbWlzZT8gKGNhciBsaXN0KSkgKGZvcmNlIChjYXIgbGlzdCkpIChjYXIgbGlzdCkpIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGZpcnN0IGludGVnZXIgbGlzdCkgKGNvbmQgKChub3QgKHBhaXI/IGxpc3QpKSBsaXN0KSAoI3QgKFpFRGZpcnN0ISBpbnRlZ2VyIGxpc3QgKHF1b3RlICgpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmbGF0dGVuISBaRURsaXN0IFpFRHN1Yi1saXN0LWZvdW5kPyBaRURjb2xsZWN0KSAoY29uZCAoKGFuZCAoWkVEbnVsbD8gWkVEbGlzdCkgKFpFRG5vdCBaRURzdWItbGlzdC1mb3VuZD8pKSAoWkVEcmV2ZXJzZSBaRURjb2xsZWN0KSkgKChaRURudWxsPyBaRURsaXN0KSAoWkVEZmxhdHRlbiEgKFpFRHJldmVyc2UgWkVEY29sbGVjdCkgI2YgKHF1b3RlICgpKSkpICgoWkVEbm90IChaRURwYWlyPyBaRURsaXN0KSkgKFpFRGZsYXR0ZW4hIChxdW90ZSAoKSkgWkVEc3ViLWxpc3QtZm91bmQ/IChaRURjb25zIFpFRGxpc3QgWkVEY29sbGVjdCkpKSAoKFpFRHBhaXI/IChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpKSAoWkVEZmxhdHRlbiEgKGlmIChwcm9taXNlPyAoY2RyIFpFRGxpc3QpKSAoZm9yY2UgKGNkciBaRURsaXN0KSkgKGNkciBaRURsaXN0KSkgI3QgKFpFRGNvbnMgKGlmIChwcm9taXNlPyAoY2RyIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpKSkgKGZvcmNlIChjZHIgKGlmIChwcm9taXNlPyAoY2FyIFpFRGxpc3QpKSAoZm9yY2UgKGNhciBaRURsaXN0KSkgKGNhciBaRURsaXN0KSkpKSAoY2RyIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpKSkgKFpFRGNvbnMgKGlmIChwcm9taXNlPyAoY2FyIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpKSkgKGZvcmNlIChjYXIgKGlmIChwcm9taXNlPyAoY2FyIFpFRGxpc3QpKSAoZm9yY2UgKGNhciBaRURsaXN0KSkgKGNhciBaRURsaXN0KSkpKSAoY2FyIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpKSkgWkVEY29sbGVjdCkpKSkgKChaRURudWxsPyAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdCkpIChmb3JjZSAoY2FyIFpFRGxpc3QpKSAoY2FyIFpFRGxpc3QpKSkgKFpFRGZsYXR0ZW4hIChpZiAocHJvbWlzZT8gKGNkciBaRURsaXN0KSkgKGZvcmNlIChjZHIgWkVEbGlzdCkpIChjZHIgWkVEbGlzdCkpIFpFRHN1Yi1saXN0LWZvdW5kPyBaRURjb2xsZWN0KSkgKCN0IChaRURmbGF0dGVuISAoaWYgKHByb21pc2U/IChjZHIgWkVEbGlzdCkpIChmb3JjZSAoY2RyIFpFRGxpc3QpKSAoY2RyIFpFRGxpc3QpKSBaRURzdWItbGlzdC1mb3VuZD8gKFpFRGNvbnMgKGlmIChwcm9taXNlPyAoY2FyIFpFRGxpc3QpKSAoZm9yY2UgKGNhciBaRURsaXN0KSkgKGNhciBaRURsaXN0KSkgWkVEY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZmxhdHRlbiBaRURsaXN0KSAoY29uZCAoI3QgKFpFRGZsYXR0ZW4hIFpFRGxpc3QgI2YgKHF1b3RlICgpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmb3ItZWFjaCBaRURlZmZlY3QgWkVEbGlzdCkgKGNvbmQgKCN0IChmb3ItZWFjaCBaRURlZmZlY3QgWkVEbGlzdCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmdW5jdGlvbiBleHByZXNzaW9uKSAoY29uZCAoI3QgKGNhYXIgZXhwcmVzc2lvbikpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmdW5jdGlvbi1zb3J0IHNlbnRlbmNlcykgKGNvbmQgKCN0IChaRURyZCAocXVvdGUgKCkpIGFwcGVuZCAoWkVEc29ydCBaRURjbGF1c2UtbGVzcz8gKFpFRGJ5LWZvdXIgc2VudGVuY2VzKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZnVuY3Rpb25pemUgY2xhdXNlIGFyaXR5LWhhc2gpIChjb25kICgjdCAobGlzdCAocXVvdGUgZGVmaW5lKSAoY29ucyAoWkVEY2xhdXNlLW5hbWUgY2xhdXNlKSAoWkVEY2xhdXNlLWFyZ3VtZW50cyBjbGF1c2UpKSAoY29ucyAocXVvdGUgY29uZCkgKGFwcGVuZCAoWkVEY29uZGVmeSAoWkVEbWFwLXdpdGggWkVEc2NoZW1lZnkgKFpFRGNsYXVzZS1ib2R5IGNsYXVzZSkgYXJpdHktaGFzaCkpIChsaXN0IChsaXN0IChxdW90ZSBlbHNlKSAocXVvdGUgZXJyKSkpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZ2F0aGVyLWNvdW50PyEgY2FuZGlkYXRlKSAoY29uZCAoI3QgKGFuZCAoPSA2IChsZW5ndGggY2FuZGlkYXRlKSkgKGVxdj8gI1xaIChjYXIgY2FuZGlkYXRlKSkgKGVxdj8gI1xFIChjYWRyIGNhbmRpZGF0ZSkpIChlcXY/ICNcRCAoY2FkZHIgY2FuZGlkYXRlKSkgKGVxdj8gI1wwIChjYWRkZHIgY2FuZGlkYXRlKSkgKFpFRGRpZ2l0PyAoY2FyIChjZGRkZHIgY2FuZGlkYXRlKSkpIChaRURkaWdpdD8gKGNhZHIgKGNkZGRkciBjYW5kaWRhdGUpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZ2F0aGVyLWNvdW50PyBzeW1ib2wpIChjb25kICgjdCAoWkVEZ2F0aGVyLWNvdW50PyEgKHN0cmluZy0+bGlzdCAoc3ltYm9sLT5zdHJpbmcgc3ltYm9sKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZ2F0aGVyLW5vdW4gc2VudGVuY2UpIChjb25kICgobnVsbD8gc2VudGVuY2UpIChxdW90ZSAoKSkpICgoZXF2PyAjXHNwYWNlIChjYXIgc2VudGVuY2UpKSAocXVvdGUgKCkpKSAoI3QgKGNvbnMgKGNhciBzZW50ZW5jZSkgKFpFRGdhdGhlci1ub3VuIChjZHIgc2VudGVuY2UpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURnYXRoZXItdmVyYiBzZW50ZW5jZSkgKGNvbmQgKChlcXY/ICNcKSAoY2FyIHNlbnRlbmNlKSkgKHF1b3RlICgpKSkgKCN0IChjb25zIChjYXIgc2VudGVuY2UpIChaRURnYXRoZXItdmVyYiAoY2RyIHNlbnRlbmNlKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZ3IgZ2FyYmFnZSB2YWx1ZSkgKGNvbmQgKCN0IChiZWdpbiAoWkVEZHIgZ2FyYmFnZSkgdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZ3JyIGdhcmJhZ2UgdmFsdWUpIChjb25kICgjdCAoYmVnaW4gKFpFRGRyciBnYXJiYWdlKSB2YWx1ZSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURsZWFkaW5nLW5ld2xpbmUgcHJvZ3JhbSkgKGNvbmQgKChudWxsPyBwcm9ncmFtKSAocXVvdGUgKCkpKSAoKGVxdj8gI1xuZXdsaW5lIChjYXIgcHJvZ3JhbSkpIChjZHIgcHJvZ3JhbSkpICgjdCBwcm9ncmFtKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbGl0ZXJhbD8gbGl0ZXJhbC1saXN0KSAoY29uZCAoI3QgKGVxdj8gI1wiIChjYXIgbGl0ZXJhbC1saXN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtYWtlLVpFRCBaRUQtbGlzdCkgKGNvbmQgKChlcXVhbD8gWkVELWxpc3QgKGxpc3QgI1xlICNcciAjXHIpKSAiJ2VyciIpICgoZXF1YWw/IFpFRC1saXN0IChsaXN0ICNcbiAjXGkgI1xsKSkgIicoKSIpICgoZXF1YWw/IFpFRC1saXN0IChsaXN0ICNcYSAjXG4gI1xkKSkgImFuZCIpICgoZXF1YWw/IFpFRC1saXN0IChsaXN0ICNcbyAjXHIpKSAib3IiKSAoKGVxdWFsPyBaRUQtbGlzdCAobGlzdCAjXHEgI1x1ICNcbyAjXHQgI1xlKSkgInF1b3RlIikgKChlcXVhbD8gWkVELWxpc3QgKGxpc3QgI1xzICNcZSkpICJiZWdpbiIpICgjdCAobGlzdC0+c3RyaW5nIChhcHBlbmQgKGxpc3QgI1xaICNcRSAjXEQpIFpFRC1saXN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtYWtlLWNoYXJhY3RlciBub3VuLWxpc3QpIChjb25kICgjdCAobGlzdC0+c3RyaW5nIChjb25zICNcIyAoY29ucyAjXFwgKGNkciBub3VuLWxpc3QpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbWFrZS1leGFjdCBleGFjdC1saXN0KSAoY29uZCAoI3QgKGxpc3QtPnN0cmluZyAoYXBwZW5kIChsaXN0ICNcIyAjXGUpIGV4YWN0LWxpc3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1ha2UtbGl0ZXJhbCBsaXRlcmFsLWxpc3QpIChjb25kICgjdCAobGlzdC0+c3RyaW5nIChjZHIgKHJldmVyc2UgKGNkciAocmV2ZXJzZSBsaXRlcmFsLWxpc3QpKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1ha2UtbnVtYmVyLWNoYXJhY3RlciBub3VuLWxpc3QpIChjb25kICgjdCAobGlzdC0+c3RyaW5nIChsaXN0ICNcIyAjXFwgKGludGVnZXItPmNoYXIgKHN0cmluZy0+bnVtYmVyIChsaXN0LT5zdHJpbmcgKGNkZHIgbm91bi1saXN0KSkpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbWFwLXdpdGghIGZ1bmN0aW9uIGxpc3QgZXh0cmEgY29sbGVjdCkgKGNvbmQgKChudWxsPyBsaXN0KSBjb2xsZWN0KSAoI3QgKFpFRG1hcC13aXRoISBmdW5jdGlvbiAoY2RyIGxpc3QpIGV4dHJhIChjb25zIChmdW5jdGlvbiAoY2FyIGxpc3QpIGV4dHJhKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtYXAtd2l0aCBmdW5jdGlvbiBsaXN0IGV4dHJhKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRG1hcC13aXRoISBmdW5jdGlvbiBsaXN0IGV4dHJhIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1lcmdlISBjb21wYXJhdG9yIGxpc3QxIGxpc3QyIGNvbGxlY3QpIChjb25kICgobnVsbD8gbGlzdDIpIChhcHBlbmQgKHJldmVyc2UgY29sbGVjdCkgbGlzdDEpKSAoKG51bGw/IGxpc3QxKSAoYXBwZW5kIChyZXZlcnNlIGNvbGxlY3QpIGxpc3QyKSkgKChjb21wYXJhdG9yIChjYXIgbGlzdDIpIChjYXIgbGlzdDEpKSAoWkVEbWVyZ2UhIGNvbXBhcmF0b3IgbGlzdDEgKGNkciBsaXN0MikgKGNvbnMgKGNhciBsaXN0MikgY29sbGVjdCkpKSAoI3QgKFpFRG1lcmdlISBjb21wYXJhdG9yIChjZHIgbGlzdDEpIGxpc3QyIChjb25zIChjYXIgbGlzdDEpIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1lcmdlIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIpIChjb25kICgjdCAoWkVEbWVyZ2UhIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIgKHF1b3RlICgpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtcCBmdW5jdGlvbiBsaXN0KSAoY29uZCAoKG51bGw/IGxpc3QpIChxdW90ZSAoKSkpICgocGFpcj8gbGlzdCkgKGNvbnMgKGRlbGF5IChmdW5jdGlvbiAoaWYgKHByb21pc2U/IChjYXIgbGlzdCkpIChmb3JjZSAoY2FyIGxpc3QpKSAoY2FyIGxpc3QpKSkpIChkZWxheSAoWkVEbXAgZnVuY3Rpb24gKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpKSkpICgjdCAoZnVuY3Rpb24gbGlzdCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURuZXdsaW5lLXNwYWNlISBwcm9ncmFtKSAoY29uZCAoI3QgKGNvbnMgI1xuZXdsaW5lIChaRURuZXdsaW5lLXNwYWNlIWEgcHJvZ3JhbSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbmV3bGluZS1zcGFjZSFhIHByb2dyYW0pIChjb25kICgjdCAoWkVEbmV3bGluZS1zcGFjZSFhYSBwcm9ncmFtIChyZXZlcnNlIChaRURuZXdsaW5lLXNwYWNlIWFiIHByb2dyYW0gKHF1b3RlICgpKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG5ld2xpbmUtc3BhY2UhYWEgcHJvZ3JhbSB0cmFuc2Zvcm1lZCkgKGNvbmQgKChlcXVhbD8gcHJvZ3JhbSB0cmFuc2Zvcm1lZCkgcHJvZ3JhbSkgKCN0IChaRURuZXdsaW5lLXNwYWNlIWEgdHJhbnNmb3JtZWQpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbmV3bGluZS1zcGFjZSFhYiBwcm9ncmFtIGNvbGxlY3QpIChjb25kICgobnVsbD8gcHJvZ3JhbSkgY29sbGVjdCkgKChudWxsPyAoY2RyIHByb2dyYW0pKSAoY29ucyAoY2FyIHByb2dyYW0pIGNvbGxlY3QpKSAoKGFuZCAoZXF2PyAjXG5ld2xpbmUgKGNhciBwcm9ncmFtKSkgKG9yIChlcXY/ICNcc3BhY2UgKGNhZHIgcHJvZ3JhbSkpIChlcXY/ICNcaHQgKGNhZHIgcHJvZ3JhbSkpKSkgKFpFRG5ld2xpbmUtc3BhY2UhYWIgKGNkciBwcm9ncmFtKSBjb2xsZWN0KSkgKCN0IChaRURuZXdsaW5lLXNwYWNlIWFiIChjZHIgcHJvZ3JhbSkgKGNvbnMgKGNhciBwcm9ncmFtKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURuZXdsaW5lLXNwYWNlIHByb2dyYW0pIChjb25kICgjdCAoWkVEbmV3bGluZS1zcGFjZSEgcHJvZ3JhbSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISBwcm9ncmFtIGNvbGxlY3QpIChjb25kICgob3IgKG51bGw/IHByb2dyYW0pIChudWxsPyAoY2RyIHByb2dyYW0pKSkgKGFwcGVuZCBwcm9ncmFtIGNvbGxlY3QpKSAoKGFuZCAoZXF2PyAjXG5ld2xpbmUgKGNhciBwcm9ncmFtKSkgKGVxdj8gI1xuZXdsaW5lIChjYWRyIHByb2dyYW0pKSkgKFpFRG5ld2xpbmUtc3BhY2UtdGFiLXJlcGVhdHMhIChjZHIgcHJvZ3JhbSkgY29sbGVjdCkpICgoYW5kIChvciAoZXF2PyAjXHNwYWNlIChjYXIgcHJvZ3JhbSkpIChlcXY/ICNcaHQgKGNhciBwcm9ncmFtKSkpIChvciAoZXF2PyAjXHNwYWNlIChjYWRyIHByb2dyYW0pKSAoZXF2PyAjXGh0IChjYWRyIHByb2dyYW0pKSkpIChaRURuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISAoY2RyIHByb2dyYW0pIGNvbGxlY3QpKSAoI3QgKFpFRG5ld2xpbmUtc3BhY2UtdGFiLXJlcGVhdHMhIChjZHIgcHJvZ3JhbSkgKGNvbnMgKGNhciBwcm9ncmFtKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzIHByb2dyYW0pIChjb25kICgjdCAocmV2ZXJzZSAoWkVEbmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyEgcHJvZ3JhbSAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURuZXdsaW5lcyBjbGF1c2VzKSAoY29uZCAoI3QgKFpFRGFkZC1iZXR3ZWVuLXJhIChaRURtYXAtd2l0aCBaRURhZGQtYmV0d2Vlbi1yYSBjbGF1c2VzIChsaXN0ICNcbmV3bGluZSkpIChsaXN0IChsaXN0ICNcbmV3bGluZSAjXG5ld2xpbmUpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURub3JtYWwtY2hhcmFjdGVyPyBub3VuLWxpc3QpIChjb25kICgjdCAoZXF2PyAoY2FyIG5vdW4tbGlzdCkgI1wjKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG5vdCBaRUR2YWx1ZSkgKGNvbmQgKCN0IChub3QgWkVEdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbm90LXJldHVybj8gY2hhcmFjdGVyKSAoY29uZCAoI3QgKG5vdCAoZXF2PyAjXGNyIGNoYXJhY3RlcikpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbm91biEgbm91bi1saXN0IG51bWJlcj8pIChjb25kIChudW1iZXI/IChaRURtYWtlLWV4YWN0IG5vdW4tbGlzdCkpICgoWkVEbGl0ZXJhbD8gbm91bi1saXN0KSAoWkVEbWFrZS1saXRlcmFsIG5vdW4tbGlzdCkpICgoWkVEdHJ1ZT8gbm91bi1saXN0KSAiI3QiKSAoKFpFRGZhbHNlPyBub3VuLWxpc3QpICIjZiIpICgoWkVEbnVtYmVyLWNoYXJhY3Rlcj8gbm91bi1saXN0KSAoWkVEbWFrZS1udW1iZXItY2hhcmFjdGVyIG5vdW4tbGlzdCkpICgoWkVEbm9ybWFsLWNoYXJhY3Rlcj8gbm91bi1saXN0KSAoWkVEbWFrZS1jaGFyYWN0ZXIgbm91bi1saXN0KSkgKCN0IChaRURtYWtlLVpFRCBub3VuLWxpc3QpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbm91biBub3VuLWxpc3QpIChjb25kICgjdCAoWkVEbm91biEgbm91bi1saXN0IChzdHJpbmctPm51bWJlciAobGlzdC0+c3RyaW5nIG5vdW4tbGlzdCkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG51bGw/IFpFRHZhbHVlKSAoY29uZCAoI3QgKG51bGw/IFpFRHZhbHVlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG51bWJlci1jaGFyYWN0ZXI/IG5vdW4tbGlzdCkgKGNvbmQgKCN0IChhbmQgKGVxdj8gKGNhciBub3VuLWxpc3QpICNcIykgKGVxdj8gKGNhZHIgbm91bi1saXN0KSAjXDApIChub3QgKG51bGw/IChjZGRyIG5vdW4tbGlzdCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwYWlyPyBaRUR2YWx1ZSkgKGNvbmQgKCN0IChwYWlyPyBaRUR2YWx1ZSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwb3Agc3RhY2spIChjb25kICgjdCAoY2RyIHN0YWNrKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHByISB2YWx1ZSBvdXRwdXQtc3RyaW5nKSAoY29uZCAoI3QgKGJlZ2luIChkaXNwbGF5IChaRURwciFhIHZhbHVlIChxdW90ZSAoKSkpIG91dHB1dC1zdHJpbmcpIChaRURwciFiIG91dHB1dC1zdHJpbmcgKGdldC1vdXRwdXQtc3RyaW5nIG91dHB1dC1zdHJpbmcpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwciFhIHZhbHVlIGNvbGxlY3QpIChjb25kICgoY2hhcj8gdmFsdWUpIChaRURwciFhYSAobGlzdC0+c3RyaW5nIChsaXN0ICNcIyB2YWx1ZSkpIGNvbGxlY3QpKSAoKHN0cmluZz8gdmFsdWUpIChaRURwciFhYSAoc3RyaW5nLWFwcGVuZCAiXCIiIHZhbHVlICJcIiIpIGNvbGxlY3QpKSAoKHN5bWJvbD8gdmFsdWUpIChaRURwciFhYSAoc3ltYm9sLT5zdHJpbmcgdmFsdWUpIGNvbGxlY3QpKSAoKG51bWJlcj8gdmFsdWUpIChaRURwciFhYSAobnVtYmVyLT5zdHJpbmcgdmFsdWUpIGNvbGxlY3QpKSAoKGFuZCAoYm9vbGVhbj8gdmFsdWUpIHZhbHVlKSAoWkVEcHIhYWEgIiN0cnVlIiBjb2xsZWN0KSkgKChib29sZWFuPyB2YWx1ZSkgKFpFRHByIWFhICIjZmFsc2UiIGNvbGxlY3QpKSAoKG51bGw/IHZhbHVlKSAocmV2ZXJzZSBjb2xsZWN0KSkgKCN0IChaRURwciFhIChpZiAocHJvbWlzZT8gKGNkciB2YWx1ZSkpIChmb3JjZSAoY2RyIHZhbHVlKSkgKGNkciB2YWx1ZSkpIChjb25zIChaRURwciFhIChpZiAocHJvbWlzZT8gKGNhciB2YWx1ZSkpIChmb3JjZSAoY2FyIHZhbHVlKSkgKGNhciB2YWx1ZSkpIChxdW90ZSAoKSkpIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHByIWFhIHN0cmluZyBjb2xsZWN0KSAoY29uZCAoKG51bGw/IGNvbGxlY3QpIHN0cmluZykgKCN0IChyZXZlcnNlIChjb25zIHN0cmluZyAoY29ucyAiLiIgY29sbGVjdCkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHByIWIgb3V0cHV0LXN0cmluZyB2YWx1ZSkgKGNvbmQgKCN0IChiZWdpbiAoY2xvc2Utb3V0cHV0LXBvcnQgb3V0cHV0LXN0cmluZykgdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcHIgdmFsdWUpIChjb25kICgjdCAoWkVEcHIhIHZhbHVlIChvcGVuLW91dHB1dC1zdHJpbmcpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHByb2dyYW1pemUgcHJvZ3JhbSBhcml0eS1oYXNoKSAoY29uZCAoI3QgKGNvbnMgKHF1b3RlIGJlZ2luKSAoWkVEbWFwLXdpdGggWkVEZnVuY3Rpb25pemUgcHJvZ3JhbSBhcml0eS1oYXNoKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwdXNoIG9iamVjdCBzdGFjaykgKGNvbmQgKCN0IChjb25zIG9iamVjdCBzdGFjaykpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZCEgZnVuY3Rpb24gbGlzdCkgKGNvbmQgKChudWxsPyAoaWYgKHByb21pc2U/IChjZHIgbGlzdCkpIChmb3JjZSAoY2RyIGxpc3QpKSAoY2RyIGxpc3QpKSkgKGlmIChwcm9taXNlPyAoY2FyIGxpc3QpKSAoZm9yY2UgKGNhciBsaXN0KSkgKGNhciBsaXN0KSkpICgjdCAoWkVEcmQhIGZ1bmN0aW9uIChjb25zIChmdW5jdGlvbiAoaWYgKHByb21pc2U/IChjYXIgKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpKSAoZm9yY2UgKGNhciAoaWYgKHByb21pc2U/IChjZHIgbGlzdCkpIChmb3JjZSAoY2RyIGxpc3QpKSAoY2RyIGxpc3QpKSkpIChjYXIgKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpKSAoaWYgKHByb21pc2U/IChjYXIgbGlzdCkpIChmb3JjZSAoY2FyIGxpc3QpKSAoY2FyIGxpc3QpKSkgKGlmIChwcm9taXNlPyAoY2RyIChpZiAocHJvbWlzZT8gKGNkciBsaXN0KSkgKGZvcmNlIChjZHIgbGlzdCkpIChjZHIgbGlzdCkpKSkgKGZvcmNlIChjZHIgKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpKSAoY2RyIChpZiAocHJvbWlzZT8gKGNkciBsaXN0KSkgKGZvcmNlIChjZHIgbGlzdCkpIChjZHIgbGlzdCkpKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJkIGZpbmFsIGZ1bmN0aW9uIGxpc3QpIChjb25kICgjdCAoWkVEcmQhIGZ1bmN0aW9uIChjb25zIGZpbmFsIChyZXZlcnNlIGxpc3QpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkLWFsbCEgY29sbGVjdCkgKGNvbmQgKCN0IChaRURyZWFkLWFsbCFhIChyZWFkLWNoYXIpIGNvbGxlY3QpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1hbGwhYSBjaGFyYWN0ZXIgY29sbGVjdCkgKGNvbmQgKChlb2Ytb2JqZWN0PyBjaGFyYWN0ZXIpIGNvbGxlY3QpICgjdCAoWkVEcmVhZC1hbGwhIChjb25zIGNoYXJhY3RlciBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkLWFsbCkgKGNvbmQgKCN0IChyZXZlcnNlIChaRURyZWFkLWFsbCEgKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1zZW50ZW5jZSFhIHNlbnRlbmNlIGNvbGxlY3QpIChjb25kICgobnVsbD8gc2VudGVuY2UpIGNvbGxlY3QpICgoZXF2PyAjXHNwYWNlIChjYXIgc2VudGVuY2UpKSAoWkVEcmVhZC1zZW50ZW5jZSFhIChjZHIgc2VudGVuY2UpIGNvbGxlY3QpKSAoKGVxdj8gI1woIChjYXIgc2VudGVuY2UpKSAoWkVEcmVhZC1zZW50ZW5jZSFhYSBzZW50ZW5jZSAoWkVEZ2F0aGVyLXZlcmIgKGNkciBzZW50ZW5jZSkpIGNvbGxlY3QpKSAoI3QgKFpFRHJlYWQtc2VudGVuY2UhYWIgc2VudGVuY2UgKFpFRGdhdGhlci1ub3VuIHNlbnRlbmNlKSBjb2xsZWN0KSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2UhYWEgc2VudGVuY2UgZ2F0aGVyLXZlcmIgY29sbGVjdCkgKGNvbmQgKCN0IChaRURyZWFkLXNlbnRlbmNlIWEgKFpFRHRhaWxzICgrIDIgKGxlbmd0aCBnYXRoZXItdmVyYikpIHNlbnRlbmNlKSAoY29ucyAoWkVEdmVyYiBnYXRoZXItdmVyYikgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1zZW50ZW5jZSFhYiBzZW50ZW5jZSBnYXRoZXItbm91biBjb2xsZWN0KSAoY29uZCAoI3QgKFpFRHJlYWQtc2VudGVuY2UhYSAoWkVEdGFpbHMgKGxlbmd0aCBnYXRoZXItbm91bikgc2VudGVuY2UpIChjb25zIChaRURub3VuIGdhdGhlci1ub3VuKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkLXNlbnRlbmNlIWIgbGlzdCBvdXRwdXQtc3RyaW5nKSAoY29uZCAoI3QgKGJlZ2luIChkaXNwbGF5IGxpc3Qgb3V0cHV0LXN0cmluZykgKFpFRHJlYWQtc2VudGVuY2UhYmEgb3V0cHV0LXN0cmluZyAoZ2V0LW91dHB1dC1zdHJpbmcgb3V0cHV0LXN0cmluZykpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2UhYmEgb3V0cHV0LXN0cmluZyBnZXQtb3V0cHV0LXN0cmluZykgKGNvbmQgKCN0IChiZWdpbiAoY2xvc2Utb3V0cHV0LXBvcnQgb3V0cHV0LXN0cmluZykgKFpFRHJlYWQtc2VudGVuY2UhYmFhIChvcGVuLWlucHV0LXN0cmluZyBnZXQtb3V0cHV0LXN0cmluZykpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2UhYmFhIGlucHV0LXN0cmluZykgKGNvbmQgKCN0IChaRURyZWFkLXNlbnRlbmNlIWJhYWEgaW5wdXQtc3RyaW5nIChyZWFkIGlucHV0LXN0cmluZykpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1zZW50ZW5jZSFiYWFhIGlucHV0LXN0cmluZyBhbnN3ZXIpIChjb25kICgjdCAoYmVnaW4gKGNsb3NlLWlucHV0LXBvcnQgaW5wdXQtc3RyaW5nKSBhbnN3ZXIpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1zZW50ZW5jZSBzZW50ZW5jZSkgKGNvbmQgKCN0IChaRURyZWFkLXNlbnRlbmNlIWIgKHJldmVyc2UgKFpFRHJlYWQtc2VudGVuY2UhYSBzZW50ZW5jZSAocXVvdGUgKCkpKSkgKG9wZW4tb3V0cHV0LXN0cmluZykpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1zZW50ZW5jZXMgc2VudGVuY2VzKSAoY29uZCAoI3QgKG1hcCBaRURyZWFkLXNlbnRlbmNlIHNlbnRlbmNlcykpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkeS1jbGF1c2UgY2xhdXNlKSAoY29uZCAoI3QgKGNvbnMgKGNhYWFyIGNsYXVzZSkgKGNvbnMgKGNkYXIgY2xhdXNlKSAoY2RyIGNsYXVzZSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWR5LXByb2dyYW0gcHJvZ3JhbSkgKGNvbmQgKCN0IChtYXAgWkVEcmVhZHktY2xhdXNlIHByb2dyYW0pKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSEgcHJvZ3JhbSkgKGNvbmQgKChudWxsPyBwcm9ncmFtKSAocXVvdGUgKCkpKSAoKG9yIChlcXY/IChjYXIgcHJvZ3JhbSkgI1xzcGFjZSkgKGVxdj8gKGNhciBwcm9ncmFtKSAjXGh0KSAoZXF2PyAoY2FyIHByb2dyYW0pICNcY3IpIChlcXY/IChjYXIgcHJvZ3JhbSkgI1xuZXdsaW5lKSkgKFpFRHJlcGxhY2UtdHJhaWxpbmctd2hpdGUtc3BhY2UhIChjZHIgcHJvZ3JhbSkpKSAoI3QgKGNvbnMgI1xuZXdsaW5lIHByb2dyYW0pKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSBwcm9ncmFtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRHJlcGxhY2UtdHJhaWxpbmctd2hpdGUtc3BhY2UhIChyZXZlcnNlIHByb2dyYW0pKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZXZlcnNlIFpFRGxpc3QpIChjb25kICgjdCAocmV2ZXJzZSBaRURsaXN0KSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNjaGVtZWZ5ISBleHByZXNzaW9uIGFyaXR5LWhhc2ggc3RhY2spIChjb25kICgobnVsbD8gZXhwcmVzc2lvbikgKFpFRHRvcCBzdGFjaykpICgoWkVEYXBwbGljYXRpb24/IGV4cHJlc3Npb24pIChaRURzY2hlbWVmeSFhIGV4cHJlc3Npb24gYXJpdHktaGFzaCBzdGFjayAoWkVEZnVuY3Rpb24gZXhwcmVzc2lvbikpKSAoI3QgKFpFRHNjaGVtZWZ5ISAoY2RyIGV4cHJlc3Npb24pIGFyaXR5LWhhc2ggKFpFRHB1c2ggKGNhciBleHByZXNzaW9uKSBzdGFjaykpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc2NoZW1lZnkhYSBleHByZXNzaW9uIGFyaXR5LWhhc2ggc3RhY2sgZnVuY3Rpb24pIChjb25kICgjdCAoWkVEc2NoZW1lZnkhYWEgZXhwcmVzc2lvbiBhcml0eS1oYXNoIHN0YWNrIGZ1bmN0aW9uIChaRURhcml0eSBhcml0eS1oYXNoIGZ1bmN0aW9uKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzY2hlbWVmeSFhYSBleHByZXNzaW9uIGFyaXR5LWhhc2ggc3RhY2sgZnVuY3Rpb24gYXJpdHkpIChjb25kICgoWkVEZ2F0aGVyLWNvdW50PyBmdW5jdGlvbikgKFpFRHNjaGVtZWZ5ISAoY2RyIGV4cHJlc3Npb24pIGFyaXR5LWhhc2ggKFpFRHB1c2ggKFpFRGZpcnN0IGFyaXR5IHN0YWNrKSAoWkVEdGFpbHMgYXJpdHkgc3RhY2spKSkpICgoZXE/IGZ1bmN0aW9uIChxdW90ZSBaRUQxKSkgKFpFRHNjaGVtZWZ5ISAoY2RyIGV4cHJlc3Npb24pIGFyaXR5LWhhc2ggKFpFRHB1c2ggKGxpc3QgKHF1b3RlIGlmKSAobGlzdCAocXVvdGUgcHJvbWlzZT8pIChjb25zIChxdW90ZSBjYXIpIChaRURmaXJzdCBhcml0eSBzdGFjaykpKSAobGlzdCAocXVvdGUgZm9yY2UpIChjb25zIChxdW90ZSBjYXIpIChaRURmaXJzdCBhcml0eSBzdGFjaykpKSAoY29ucyAocXVvdGUgY2FyKSAoWkVEZmlyc3QgYXJpdHkgc3RhY2spKSkgKFpFRHRhaWxzIGFyaXR5IHN0YWNrKSkpKSAoKGVxPyBmdW5jdGlvbiAocXVvdGUgWkVEISkpIChaRURzY2hlbWVmeSEgKGNkciBleHByZXNzaW9uKSBhcml0eS1oYXNoIChaRURwdXNoIChsaXN0IChxdW90ZSBpZikgKGxpc3QgKHF1b3RlIHByb21pc2U/KSAoY29ucyAocXVvdGUgY2RyKSAoWkVEZmlyc3QgYXJpdHkgc3RhY2spKSkgKGxpc3QgKHF1b3RlIGZvcmNlKSAoY29ucyAocXVvdGUgY2RyKSAoWkVEZmlyc3QgYXJpdHkgc3RhY2spKSkgKGNvbnMgKHF1b3RlIGNkcikgKFpFRGZpcnN0IGFyaXR5IHN0YWNrKSkpIChaRUR0YWlscyBhcml0eSBzdGFjaykpKSkgKChlcT8gZnVuY3Rpb24gKHF1b3RlIFpFRGMpKSAoWkVEc2NoZW1lZnkhIChjZHIgZXhwcmVzc2lvbikgYXJpdHktaGFzaCAoWkVEcHVzaCAoY29ucyAocXVvdGUgY29ucykgKG1hcCBaRURkZWxheS13cmFwIChaRURmaXJzdCBhcml0eSBzdGFjaykpKSAoWkVEdGFpbHMgYXJpdHkgc3RhY2spKSkpICgjdCAoWkVEc2NoZW1lZnkhIChjZHIgZXhwcmVzc2lvbikgYXJpdHktaGFzaCAoWkVEcHVzaCAoY29ucyBmdW5jdGlvbiAoWkVEZmlyc3QgYXJpdHkgc3RhY2spKSAoWkVEdGFpbHMgYXJpdHkgc3RhY2spKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzY2hlbWVmeSBleHByZXNzaW9uIGFyaXR5LWhhc2gpIChjb25kICgjdCAobGlzdCAoWkVEc2NoZW1lZnkhIChyZXZlcnNlIGV4cHJlc3Npb24pIGFyaXR5LWhhc2ggKFpFRHN0YWNrKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc2VudGVuY2UtbGVzcz8gc2VudGVuY2UxIHNlbnRlbmNlMikgKGNvbmQgKChudWxsPyBzZW50ZW5jZTIpICNmKSAoKG51bGw/IHNlbnRlbmNlMSkgI3QpICgoWkVEY2hhcmFjdGVyLWxlc3M/IChjYXIgc2VudGVuY2UxKSAoY2FyIHNlbnRlbmNlMikpICN0KSAoKFpFRGNoYXJhY3Rlci1sZXNzPyAoY2FyIHNlbnRlbmNlMikgKGNhciBzZW50ZW5jZTEpKSAjZikgKCN0IChaRURzZW50ZW5jZS1sZXNzPyAoY2RyIHNlbnRlbmNlMSkgKGNkciBzZW50ZW5jZTIpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNlbnRlbmNlcyEgcHJvZ3JhbSBjb2xsZWN0MSBjb2xsZWN0MikgKGNvbmQgKChudWxsPyBwcm9ncmFtKSBjb2xsZWN0MikgKChlcXY/ICNcbmV3bGluZSAoY2FyIHByb2dyYW0pKSAoWkVEc2VudGVuY2VzISAoY2RyIHByb2dyYW0pIChxdW90ZSAoKSkgKGNvbnMgKHJldmVyc2UgY29sbGVjdDEpIGNvbGxlY3QyKSkpICgjdCAoWkVEc2VudGVuY2VzISAoY2RyIHByb2dyYW0pIChjb25zIChjYXIgcHJvZ3JhbSkgY29sbGVjdDEpIGNvbGxlY3QyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNlbnRlbmNlcyBwcm9ncmFtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRHNlbnRlbmNlcyEgcHJvZ3JhbSAocXVvdGUgKCkpIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNvcnQhYSBqdW1ibGUpIChjb25kICgjdCAobWFwIGxpc3QganVtYmxlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNvcnQhYiBjb21wYXJhdG9yIGp1bWJsZSkgKGNvbmQgKChudWxsPyBqdW1ibGUpIChxdW90ZSAoKSkpICgobnVsbD8gKGNkciBqdW1ibGUpKSBqdW1ibGUpICgjdCAoWkVEc29ydCFiIGNvbXBhcmF0b3IgKGNvbnMgKFpFRG1lcmdlIGNvbXBhcmF0b3IgKGNhciBqdW1ibGUpIChjYWRyIGp1bWJsZSkpIChaRURzb3J0IWIgY29tcGFyYXRvciAoY2RkciBqdW1ibGUpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc29ydCBjb21wYXJhdG9yIGp1bWJsZSkgKGNvbmQgKCN0IChjYXIgKFpFRHNvcnQhYiBjb21wYXJhdG9yIChaRURzb3J0IWEganVtYmxlKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc3BhY2UtbmV3bGluZSEgcHJvZ3JhbSBjb2xsZWN0KSAoY29uZCAoKG9yIChudWxsPyBwcm9ncmFtKSAobnVsbD8gKGNkciBwcm9ncmFtKSkpIChhcHBlbmQgcHJvZ3JhbSBjb2xsZWN0KSkgKChhbmQgKGVxdj8gI1xzcGFjZSAoY2FyIHByb2dyYW0pKSAoZXF2PyAjXG5ld2xpbmUgKGNhZHIgcHJvZ3JhbSkpKSAoWkVEc3BhY2UtbmV3bGluZSEgKGNkciBwcm9ncmFtKSBjb2xsZWN0KSkgKCN0IChaRURzcGFjZS1uZXdsaW5lISAoY2RyIHByb2dyYW0pIChjb25zIChjYXIgcHJvZ3JhbSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc3BhY2UtbmV3bGluZSBwcm9ncmFtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRHNwYWNlLW5ld2xpbmUhIHByb2dyYW0gKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc3RhY2spIChjb25kICgjdCAocXVvdGUgKCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEdGFiLXJlcGxhY2UhIHByb2dyYW0gY29sbGVjdCkgKGNvbmQgKChudWxsPyBwcm9ncmFtKSBjb2xsZWN0KSAoKGVxdj8gI1xodCAoY2FyIHByb2dyYW0pKSAoWkVEdGFiLXJlcGxhY2UhIChjZHIgcHJvZ3JhbSkgKGNvbnMgI1xzcGFjZSBjb2xsZWN0KSkpICgjdCAoWkVEdGFiLXJlcGxhY2UhIChjZHIgcHJvZ3JhbSkgKGNvbnMgKGNhciBwcm9ncmFtKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRUR0YWItcmVwbGFjZSBwcm9ncmFtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRHRhYi1yZXBsYWNlISBwcm9ncmFtIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHRhaWxzIG51bWJlciBsaXN0KSAoY29uZCAoKG51bGw/IGxpc3QpIChxdW90ZSAoKSkpICgoemVybz8gbnVtYmVyKSBsaXN0KSAoKD4gbnVtYmVyIDApIChaRUR0YWlscyAoLSBudW1iZXIgMSkgKGNkciBsaXN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRUR0b3Agc3RhY2spIChjb25kICgjdCAoY2FyIHN0YWNrKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHRydWU/IG5vdW4tbGlzdCkgKGNvbmQgKCN0IChlcXVhbD8gbm91bi1saXN0IChsaXN0ICNcIyAjXHQgI1xyICNcdSAjXGUpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHZlcmIgdmVyYi1saXN0KSAoY29uZCAoKFpFRGxpdGVyYWw/IHZlcmItbGlzdCkgKGxpc3QgKFpFRG1ha2UtbGl0ZXJhbCB2ZXJiLWxpc3QpKSkgKCN0IChsaXN0IChaRURtYWtlLVpFRCB2ZXJiLWxpc3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHdyaXRlLWFsbCBwcm9ncmFtKSAoY29uZCAoKG51bGw/IHByb2dyYW0pIChxdW90ZSBlcnIpKSAoI3QgKFpFRHdyaXRlLWFsbCAoYmVnaW4gKHdyaXRlLWNoYXIgKGNhciBwcm9ncmFtKSkgKGNkciBwcm9ncmFtKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEemVkLT5zY2hlbWUhIHZhbHVlIGNvbGxlY3QpIChjb25kICgobnVsbD8gdmFsdWUpIChyZXZlcnNlIGNvbGxlY3QpKSAoI3QgKFpFRHplZC0+c2NoZW1lISAoaWYgKHByb21pc2U/IChjZHIgdmFsdWUpKSAoZm9yY2UgKGNkciB2YWx1ZSkpIChjZHIgdmFsdWUpKSAoY29ucyAoWkVEemVkLT5zY2hlbWUgKGlmIChwcm9taXNlPyAoY2FyIHZhbHVlKSkgKGZvcmNlIChjYXIgdmFsdWUpKSAoY2FyIHZhbHVlKSkpIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHplZC0+c2NoZW1lIHZhbHVlKSAoY29uZCAoKG5vdCAocGFpcj8gdmFsdWUpKSB2YWx1ZSkgKCN0IChaRUR6ZWQtPnNjaGVtZSEgdmFsdWUgKHF1b3RlICgpKSkpIChlbHNlIGVycikpKSkKKFpFRGNvbXAp
				
				 
			
				
			
			
				
	 
KGFwcGVuZCkgbGlzdDEgbGlzdDIKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7YXBwZW5kJnF1b3Q7IGxpc3QxIGxpc3QyCiAKKGNhcikgcGFpcgpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtjYXImcXVvdDsgcGFpcgogCihjZHIpIHBhaXIKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7IHBhaXIKIAooY29ucykgb25lIHR3bwpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDtjb25zJnF1b3Q7IG9uZSB0d28KIAoobWFwKSBmdW5jdGlvbiBsaXN0CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O21hcCZxdW90OyBmdW5jdGlvbiBsaXN0CiAKKG1lcmdlKSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyCmNvbW1lbnQ6CiN0cnVlCihtZXJnZTEpIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIgbmlsCiAKKG1lcmdlMSkgY29tcGFyYXRvciBsaXN0MSBsaXN0MiBjb2xsZWN0CmNvbW1lbnQ6CihudWxsPykgbGlzdDIKKGFwcGVuZCkgKHJldmVyc2UpIGNvbGxlY3QgbGlzdDEKIAoobWVyZ2UxKSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyIGNvbGxlY3QKY29tbWVudDoKKG51bGw/KSBsaXN0MQooYXBwZW5kKSAocmV2ZXJzZSkgY29sbGVjdCBsaXN0MgogCihtZXJnZTEpIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIgY29sbGVjdApjb21tZW50OgooMDAzKSBjb21wYXJhdG9yIChjYXIpIGxpc3QyIChjYXIpIGxpc3QxCihtZXJnZTEpIGNvbXBhcmF0b3IgbGlzdDEgKGNkcikgbGlzdDIgKGNvbnMpIChjYXIpIGxpc3QyIGNvbGxlY3QKIAoobWVyZ2UxKSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyIGNvbGxlY3QKY29tbWVudDoKI3RydWUKKG1lcmdlMSkgY29tcGFyYXRvciAoY2RyKSBsaXN0MSBsaXN0MiAoY29ucykgKGNhcikgbGlzdDEgY29sbGVjdAogCihudWxsPykgdmFsdWUKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgdmFsdWUKIAoocmV2ZXJzZSkgbGlzdApjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IGxpc3QKIAooc29ydCkgY29tcGFyYXRvciBqdW1ibGUKY29tbWVudDoKI3RydWUKKGNhcikgKHNvcnQxMSkgY29tcGFyYXRvciAoc29ydDEpIGp1bWJsZQogCihzb3J0MSkganVtYmxlCmNvbW1lbnQ6CiN0cnVlCihtYXApICZxdW90O2xpc3QmcXVvdDsganVtYmxlCiAKKHNvcnQxMSkgY29tcGFyYXRvciBqdW1ibGUKY29tbWVudDoKKG51bGw/KSBqdW1ibGUKbmlsCiAKKHNvcnQxMSkgY29tcGFyYXRvciBqdW1ibGUKY29tbWVudDoKKG51bGw/KSAoY2RyKSBqdW1ibGUKanVtYmxlCiAKKHNvcnQxMSkgY29tcGFyYXRvciBqdW1ibGUKY29tbWVudDoKI3RydWUKKHNvcnQxMSkgY29tcGFyYXRvcgogICAgICAgICAoY29ucykgKG1lcmdlKSBjb21wYXJhdG9yIChjYXIpIGp1bWJsZSAoMDAyKSAmcXVvdDtjYWRyJnF1b3Q7IGp1bWJsZQogICAgICAgICAgICAgICAgKHNvcnQxMSkgY29tcGFyYXRvciAoMDAyKSAmcXVvdDtjZGRyJnF1b3Q7IGp1bWJsZQ==
(append) list1 list2
comment:
#true
(003) "append" list1 list2
 
(car) pair
comment:
#true
(002) "car" pair
 
(cdr) pair
comment:
#true
(002) "cdr" pair
 
(cons) one two
comment:
#true
(003) "cons" one two
 
(map) function list
comment:
#true
(003) "map" function list
 
(merge) comparator list1 list2
comment:
#true
(merge1) comparator list1 list2 nil
 
(merge1) comparator list1 list2 collect
comment:
(null?) list2
(append) (reverse) collect list1
 
(merge1) comparator list1 list2 collect
comment:
(null?) list1
(append) (reverse) collect list2
 
(merge1) comparator list1 list2 collect
comment:
(003) comparator (car) list2 (car) list1
(merge1) comparator list1 (cdr) list2 (cons) (car) list2 collect
 
(merge1) comparator list1 list2 collect
comment:
#true
(merge1) comparator (cdr) list1 list2 (cons) (car) list1 collect
 
(null?) value
comment:
#true
(002) "null?" value
 
(reverse) list
comment:
#true
(002) "reverse" list
 
(sort) comparator jumble
comment:
#true
(car) (sort11) comparator (sort1) jumble
 
(sort1) jumble
comment:
#true
(map) "list" jumble
 
(sort11) comparator jumble
comment:
(null?) jumble
nil
 
(sort11) comparator jumble
comment:
(null?) (cdr) jumble
jumble
 
(sort11) comparator jumble
comment:
#true
(sort11) comparator
         (cons) (merge) comparator (car) jumble (002) "cadr" jumble
                (sort11) comparator (002) "cddr" jumble