;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(require 'cl-lib)
(defvar cps--bindings nil)
(defvar cps--states nil)
(defvar cps--value-symbol nil)
(defvar cps--state-symbol nil)
(defvar cps--cleanup-table-symbol nil)
(defvar cps--cleanup-function nil)#@23 

(fn FMT &rest ARGS)
(defalias 'cps--gensym '(macro . #[385 "\300\301BBD\207" [gensym format] 6 (#$ . 289)]))#@127 List of functions to apply to atomic forms.
These are transformer functions applied to atomic forms evaluated
in CPS context.
(defvar cps--dynamic-wrappers '(identity) (#$ . 408))#@73 List of special forms treated just like ordinary function applications.
(defconst cps-standard-special-forms '(setq setq-default throw interactive) (#$ . 593))#@24 

(fn FUNC &rest ARGS)
(defalias 'cps--trace-funcall #[385 "\300\301#\210\302\"\300\303#\210\207" [message "%S: args=%S" apply "%S: result=%S"] 7 (#$ . 758)])#@23 

(fn FMT &rest ARGS)
(defalias 'cps--trace #[385 "\300\301\302\303P#!\207" [princ apply format "\n"] 7 (#$ . 928)])#@71 Non-nil if and only if DEFINITION is a special form.

(fn DEFINITION)
(defalias 'cps--special-form-p #[257 "\2119\203 \300!\203 \301!\262\302!\205 \303!A\304=\207" [fboundp indirect-function subrp subr-arity unevalled] 3 (#$ . 1052)])#@17 

(fn FUNCTION)
(defalias 'cps--define-unsupported '(macro . #[257 "\300\301\302\303\"!\304\305EE\207" [defun intern format "cps--transform-%s" error "%s not supported in generators"] 6 (#$ . 1300)]))#@518 Evaluate BODY with WRAPPER added to the stack of atomic-form wrappers.
WRAPPER is a function that takes an atomic form and returns a wrapped form.

Whenever we generate an atomic form (i.e., a form that can't
`iter-yield'), we first (before actually inserting that form in our
generated code) pass that form through all the transformer
functions.  We use this facility to wrap forms that can transfer
control flow non-locally in goo that diverts this control flow to
the CPS state machinery.

(fn WRAPPER &rest BODY)
(defalias 'cps--with-value-wrapper '(macro . #[385 "\300\301\302\303BBDCBB\207" [let cps--dynamic-wrappers cons (cps--dynamic-wrappers)] 7 (#$ . 1509)]))
(byte-code "\300\301\302\303#\300\207" [function-put cps--with-value-wrapper lisp-indent-function 1] 4)#@31 

(fn DYNAMIC-VAR STATIC-VAR)
(defalias 'cps--make-dynamic-binding-wrapper #[514 "\204 \301\300!\210\302\303#\207" [lexical-binding cl--assertion-failed make-closure #[257 "\302\301\300DC\303\304\300\301EEE\207" [V0 V1 let unwind-protect setf] 8 "\n\n(fn FORM)"]] 6 (#$ . 2291)])#@113 Run BODY's atomic evaluations run with DYNAMIC-VAR bound to STATIC-VAR.

(fn DYNAMIC-VAR STATIC-VAR &rest BODY)
(defalias 'cps--with-dynamic-binding '(macro . #[642 "\300\301EBB\207" [cps--with-value-wrapper cps--make-dynamic-binding-wrapper] 7 (#$ . 2582)]))
(byte-code "\300\301\302\303#\300\207" [function-put cps--with-dynamic-binding lisp-indent-function 2] 4)#@87 Create a new CPS state of KIND with BODY and return the state's name.

(fn KIND BODY)
(defalias 'cps--add-state #[514 "\303\304\305\"!\211E	B\211\nB\207" [cps--cleanup-function cps--states cps--bindings gensym format "cps-state-%s-"] 6 (#$ . 2956)])
(byte-code "\300\301\302\303#\300\207" [function-put cps--add-state lisp-indent-function 1] 4)#@22 

(fn ORIGINAL-NAME)
(defalias 'cps--add-binding #[257 "\301\302\211\303\"!!B\211@\207" [cps--bindings gensym format "cps-binding-%s-"] 6 (#$ . 3311)])#@13 

(fn FORM)
(defalias 'cps--find-special-form-handler #[257 "\300\301\242\"\302!\303!\205 \211\207" [format "cps--transform-%s" intern-soft fboundp] 5 (#$ . 3471)])#@73 When non-nil, always rewrite forms into CPS even when they don't yield.
(defvar cps-inhibit-atomic-optimization nil (#$ . 3645))#@61 Return nil if FORM can yield, non-nil otherwise.

(fn FORM)
(defalias 'cps--atomic-p #[257 "?\205 \303\304\305\306E\n\"\210	)?\207" [cps-inhibit-atomic-optimization cps--yield-seen macroexpand-all-environment nil macroexpand-all cl-macrolet ((cps-internal-yield (_val) (setf cps--yield-seen t)))] 5 (#$ . 3779)])#@24 

(fn FORM NEXT-STATE)
(defalias 'cps--make-atomic-state #[514 "\304\305EE	\306:\203 @\262\211!\262A\262\202	 \266\306\307\310\305E\")\207" [cps--state-symbol cps--dynamic-wrappers cps--cleanup-function cps--value-symbol prog1 setf nil cps--add-state "atom"] 8 (#$ . 4101)])#@24 

(fn FORM NEXT-STATE)
(defalias 'cps--transform-1 #[514 "\306\307\310!\203 \311\"\207\312\232\203 \313\314\"\207:\203W\242\211\315\267\202\242\243\211:\203Q \211\242\243\211\204: \313\"\207\313\316\317\320\321	\313\322\nB\"FE\"\"\207\323\267\202o \313\324\"\207\313\324\"\207\313\324\"\207\313\324\"\207\325!\203\262 \n>\204\201 \"\207\211\324\314:\203\235 @\262:?\211\262\203\235 A\262\202\204 \211??\266\203\204\253 #\207\311\"\207\211\324\314:\203\316 @\262:?\211\262\203\316 A\262\202\265 \211??\266\203\204\334 #\207\311\"\207\243\211:\203\211\242\243\326\327!\313\316\330\320	\331	\"B\313\332B\")\257\"\"\207\333\267\202.\313\324\"\207\313\324\"\207\313\324\"\207\313\324\"\207\325!\203q\n>\204@\"\207\211\324\314:\203\\@\262:?\211\262\203\\A\262\202C\211??\266\203\204j#\207\311\"\207\211\324\314:\203\215@\262:?\211\262\203\215A\262\202t\211??\266\203\204\233#\207\311\"\207\334\232\203\255\313\324\"\207\211\335\267\202\212\243\211:\203u\211\242\211:\203\346\211\242\243\211\204\326\243\313\336\337BE\n\"\207\243\313\321\332B\337BF\n\"\207\340\267\202\377\313\324\"\207\313\324\"\207\313\324\"\207\325!\203C\n>\204\"\207\324\314:\203-@\262:?\211\262\203-A\262\202\211??\266\203\204<#\207\311\"\207\324\314:\203_@\262:?\211\262\203_A\262\202F\211??\266\203\204n#\207\311\"\207\341\267\202\215\313\324\"\207\313\324\"\207\313\324\"\207\325!\203\320\n>\204\237\"\207\211\324\314:\203\273@\262:?\211\262\203\273A\262\202\242\211??\266\203\204\311#\207\311\"\207\211\324\314:\203\354@\262:?\211\262\203\354A\262\202\323\211??\266\203\204\372#\207\311\"\207\243\211:\203\264\211\242\243\211:\203%\211\242\243\342\n#B\313\n\")\207\343\267\202>\313\324\"\207\313\324\"\207\313\324\"\207\325!\203\202\n>\204P\"\207\324\314:\203l@\262:?\211\262\203lA\262\202S\211??\266\203\204{#\207\311\"\207\324\314:\203\236@\262:?\211\262\203\236A\262\202\205\211??\266\203\204\255#\207\311\"\207\344\267\202\314\313\324\"\207\313\324\"\207\313\324\"\207\325!\203\n>\204\336\"\207\211\324\314:\203\372@\262:?\211\262\203\372A\262\202\341\211??\266\203\204#\207\311\"\207\211\324\314:\203+@\262:?\211\262\203+A\262\202\211??\266\203\2049#\207\311\"\207\243\211:\203\376\211\242\243\211:\203o\211\242\243\313\316\345\320\321	\313\n\"\313\332B\"FE\"\"\207\346\267\202\210\313\324\"\207\313\324\"\207\313\324\"\207\325!\203\314\n>\204\232\"\207\324\314:\203\266@\262:?\211\262\203\266A\262\202\235\211??\266\203\204\305#\207\311\"\207\324\314:\203\350@\262:?\211\262\203\350A\262\202\317\211??\266\203\204\367#\207\311\"\207\347\267\202\313\324\"\207\313\324\"\207\313\324\"\207\325!\203Y\n>\204(\"\207\211\324\314:\203D@\262:?\211\262\203DA\262\202+\211??\266\203\204R#\207\311\"\207\211\324\314:\203u@\262:?\211\262\203uA\262\202\\\211??\266\203\204\203#\207\311\"\207\350\232\203\225\313\324\"\207\211\351=\203A\243\211:\203\273\211\242\243\211\204\260\313\"\207\313\313\351B\n\"\"\207\352\267\202\315\313\324\"\207\313\324\"\207\325!\203\n>\204\337\"\207\211\324\314:\203\373@\262:?\211\262\203\373A\262\202\342\211??\266\203\204	#\207\311\"\207\211\324\314:\203,@\262:?\211\262\203,A\262\202\211??\266\203\204:#\207\311\"\207\353\232\203L\313\324\"\207\211\354\267\202\332	\243\211:\203r\211\242\243\211\204g\313\"\207\313\313\332B\n\"\"\207\355\232\203~\313\324\"\207\325!\203\301\n>\204\220\"\207\211\324\314:\203\254@\262:?\211\262\203\254A\262\202\223\211??\266\203\204\272#\207\311\"\207\211\324\314:\203\335@\262:?\211\262\203\335A\262\202\304\211??\266\203\204\353#\207\311\"\207\243\211:\203Z	\211\242\211\204	\243\313\332B\"\207\356\267\202\327\243\324\211:\2034@\2629\203(\324D\202)B\262A\262\202\211\237\266\203\357!\211\324\211\211\211:\203c@\262\211A\262\242\262@\262\326!B\262A\262\202@\211\237\266\205\313\360\361\324\211\211\324\211:\203\246@\262\211A\262\242\262@\262:\203\246@\262DB\262A\262A\262\202r\211\237\266\207\362!\324\211\211	\324\211:\203\352@\262\211A\262\242\262@\262:\203\352@\262DB\262A\262A\262\202\267\211\237\266\207#BB\"\207\211:\203T\211\242\243\2439\203\202@\243@\326!\313\316\363\320	\f\203&\364!\203>\365\n\"B\313\360BB\")\202O\313\366\f\360BB#\"\257\"\"\207\355\232\203a\313\324\"\207\325!\203\245\n>\204s\"\207\324\314:\203\217@\262:?\211\262\203\217A\262\202v\211??\266\203\204\236#\207\311\"\207\324\314:\203\301@\262:?\211\262\203\301A\262\202\250\211??\266\203\204\320#\207\311\"\207\355\232\203\344\313\324\"\207\325!\203(	\n>\204\366\"\207\324\314:\203	@\262:?\211\262\203	A\262\202\371\211??\266\203\204!	#\207\311\"\207\324\314:\203D	@\262:?\211\262\203D	A\262\202+	\211??\266\203\204S	#\207\311\"\207\355\232\203f	\313\324\"\207\325!\203\251	\n>\204x	\"\207\211\324\314:\203\224	@\262:?\211\262\203\224	A\262\202{	\211??\266\203\204\242	#\207\311\"\207\211\324\314:\203\305	@\262:?\211\262\203\305	A\262\202\254	\211??\266\203\204\323	#\207\311\"\207\355\232\203\345	\313\324\"\207\211\367\267\202\341\243\211:\203\n\211\242\243\211\204 \n\313\"\207\313\316\370\320\321	\313\336B\"FE\"\"\207\325!\203Z\n\n>\204)\n\"\207\211\324\314:\203E\n@\262:?\211\262\203E\nA\262\202,\n\211??\266\203\204S\n#\207\311\"\207\211\324\314:\203v\n@\262:?\211\262\203v\nA\262\202]\n\211??\266\203\204\204\n#\207\311\"\207\243\211:\203\304\n\211\242\243\211\204\240\n\313\"\207\313\326\371!\316\372\320	\313\332B\316\373\320	\f\257\"\"\257\"\262\"\207\325!\203\n>\204\326\n\"\207\211\324\314:\203\362\n@\262:?\211\262\203\362\nA\262\202\331\n\211??\266\203\204 #\207\311\"\207\211\324\314:\203#@\262:?\211\262\203#A\262\202\n\211??\266\203\2041#\207\311\"\207\243\211:\203\204\211\242\243\204M\374\375\376!!\316\377\332\361\320EC\"B\"@\324@\316\201C \332\205n\201D DBB\")@\201E !B\313\"*\207\325!\203\307\n>\204\226\"\207\211\324\314:\203\262@\262:?\211\262\203\262A\262\202\231\211??\266\203\204\300#\207\311\"\207\211\324\314:\203\343@\262:?\211\262\203\343A\262\202\312\211??\266\203\204\361#\207\311\"\207\243\211:\2032\f\211\242\243\374\375\201F !!\313\"\332\320\321	\313\332	B\"FED@EABABBB\207\325!\203u\f\n>\204D\f\"\207\211\324\314:\203`\f@\262:?\211\262\203`\fA\262\202G\f\211??\266\203\204n\f#\207\311\"\207\211\324\314:\203\221\f@\262:?\211\262\203\221\fA\262\202x\f\211??\266\203\204\237\f#\207\311\"\207\243\211:\203>\211\242\243\211\204\310\f\316\201G \320	\201H D\f\257\"\207\325!\203\f\n>\204\332\f\"\207\324\314:\203\366\f@\262:?\211\262\203\366\fA\262\202\335\f\211??\266\203\204#\207\311\"\207\324\314:\203(@\262:?\211\262\203(A\262\202\211??\266\203\2047#\207\311\"\207\325!\203\201\n>\204P\"\207\211\324\314:\203l@\262:?\211\262\203lA\262\202S\211??\266\203\204z#\207\311\"\207\211\324\314:\203\235@\262:?\211\262\203\235A\262\202\204\211??\266\203\204\253#\207\311\"\207\243\211:\203J\211\242\243\211\204\324\316\201I \320	\201J D\f\257\"\207\325!\203\n>\204\346\"\207\324\314:\203@\262:?\211\262\203A\262\202\351\211??\266\203\204#\207\311\"\207\324\314:\2034@\262:?\211\262\2034A\262\202\211??\266\203\204C#\207\311\"\207\325!\203\215\n>\204\\\"\207\211\324\314:\203x@\262:?\211\262\203xA\262\202_\211??\266\203\204\206#\207\311\"\207\211\324\314:\203\251@\262:?\211\262\203\251A\262\202\220\211??\266\203\204\267#\207\311\"\207\243\211:\203m\211\242\243\211\204\367\313\316\201K \332\320@\203\350\316\201L \320E\"\202\352E\201M \201N 	EE\"\"\207\325!\203;\n>\204	\"\207\324\314:\203%@\262:?\211\262\203%A\262\202\f\211??\266\203\2044#\207\311\"\207\324\314:\203W@\262:?\211\262\203WA\262\202>\211??\266\203\204f#\207\311\"\207\325!\203\260\n>\204\"\207\211\324\314:\203\233@\262:?\211\262\203\233A\262\202\202\211??\266\203\204\251#\207\311\"\207\211\324\314:\203\314@\262:?\211\262\203\314A\262\202\263\211??\266\203\204\332#\207\311\"\207\243\325!\203&\n>\204\365\"\207\211\324\314:\203@\262:?\211\262\203A\262\202\370\211??\266\203\204#\207\311\"\207\211\324\314:\203B@\262:?\211\262\203BA\262\202)\211??\266\203\204P#\207\311\"\207\201O \267\202s\313\324\"\207\313\324\"\207\313\324\"\207\313\324\"\207\311\"\207" [cps--state-symbol cps--value-symbol cps-standard-special-forms cps--dynamic-wrappers lexical-binding cps--cleanup-table-symbol #[514 "\300\301\"\207" [error "Special form %S incorrect or not supported"] 5 "\n\n(fn FORM NAME)"] #[771 "\211\300\211:\203% @\262:\204 \202 \301\302\303!!B\262A\262\202 \211\237\266\203\304\305\300\300\211:\203Z @\262:\203Z @\262=\204O DB\262A\262A\262\2020 \211\237\266\205BE\"\207" [nil gensym format "cps-argument-" cps--transform-1 let*] 13 "\n\n(fn NEXT-STATE FUNCTION ARGUMENTS)"] cps--atomic-p cps--make-atomic-state (and) cps--transform-1 t #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (and 37 catch 227)) cps--add-state "and" setf if and #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1=(cond) 87 #2=(inline) 93 #3=(progn) 99 #4=(or) 105)) nil cps--special-form-p cps--add-binding "catch-tag" "cps-update-tag" cps--make-catch-wrapper progn #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 278 #2# 284 #3# 290 #4# 296)) #1# #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cond 435 condition-case 769 if 1088)) or cond #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 493 #3# 499 #4# 505)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 635 #3# 641 #4# 647)) cps--make-condition-wrapper #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 812 #3# 818 #4# 824)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 954 #3# 960 #4# 966)) "if" #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 1142 #3# 1148 #4# 1154)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#2# 1284 #3# 1290 #4# 1296)) #2# inline #s(hash-table size 2 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#3# 1473 #4# 1479)) #3# #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (progn 1618 let* 1778 let 1778)) #4# #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (let 1807 let* 2039)) butlast let* append last "let*" special-variable-p cps--make-dynamic-binding-wrapper cps--replace-variable-references #s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (or 2539 prog1 2699 unwind-protect 2872 while 3064 quote 3238 function 3506 cps-internal-yield 3774)) "or" "prog1-temp" "prog1" "prog1inner" gensym format "cps-cleanup-table-" "unwind" cps--cleanup-function cps--states cps--bindings "cleanup" funcall cps--make-unwind-wrapper "cps-state-while-" "quote" quote "function" function "iter-yield" "after-yield" throw 'cps--yield #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 4191 #2# 4196 #3# 4201 #4# 4206))] 28 (#$ . 4396)])#@31 

(fn TAG-BINDING NEXT-STATE)
(defalias 'cps--make-catch-wrapper #[514 "\300\301#\207" [make-closure #[257 "\303\304\305!!\306C\307\310\301\307\311\312BBEE\313\311\n\300EEEE\207" [V0 V1 cps--state-symbol gensym format "cps-normal-exit-from-catch-" let prog1 catch setf (t) unless] 12 "\n\n(fn FORM)"]] 6 (#$ . 16889)])#@32 

(fn VAR NEXT-STATE HANDLERS)
(defalias 'cps--make-condition-wrapper #[771 "\300\301!\302\303\304!!\305\211\211:\2038 @\262\211A\262\242\262\306\307	\310B#\n\"BB\262A\262\202\f \211\237\266\204\311\312$\207" [cps--add-binding "condition-case-error" gensym format "cps-lexical-error-" nil cps--transform-1 cps--replace-variable-references progn make-closure #[257 "\304\301\300\305\211\211:\203- @\262\211A\262\242\262\306\302\301\257DB\262A\262\202 \211\237\266\204BBB\207" [V0 V1 V2 cps--state-symbol condition-case nil setf] 14 "\n\n(fn FORM)"]] 16 (#$ . 17221)])#@162 Replace all non-shadowed references to VAR with NEW-VAR in FORM.
This routine does not modify FORM.  Instead, it returns a
modified copy.

(fn VAR NEW-VAR FORM)
(defalias 'cps--replace-variable-references #[771 "\301\302DCE\"\207" [macroexpand-all-environment macroexpand-all cl-symbol-macrolet] 7 (#$ . 17833)])#@21 

(fn UNWIND-FORMS)
(defalias 'cps--make-unwind-wrapper #[257 "\204 \301\300!\210\302\303\"\207" [lexical-binding cl--assertion-failed make-closure #[257 "\301\302\303!!\304C\305\306\307\310BBE\311\300BBEE\207" [V0 gensym format "cps-normal-exit-from-unwind-" let unwind-protect prog1 setf (t) unless] 10 "\n\n(fn FORM)"]] 4 (#$ . 18155)])
(define-error 'iter-end-of-sequence "Iteration terminated" 'iter-end-of-sequence)#@23 

(fn TERMINAL-STATE)
(defalias 'cps--make-close-iterator-form #[257 "\203 \303\304\305\306	EDDC\307	\n\310BBBB\311BBB\207\307	\n\312BBBB\207" [cps--cleanup-table-symbol cps--state-symbol cps--value-symbol let cleanup cdr assq setf (nil) ((when cleanup (funcall cleanup))) (nil)] 8 (#$ . 18590)])#@13 

(fn BODY)
(defalias 'cps-generate-evaluator #[257 "\306\211\306\307\310\311!!\307\310\312!!\306\313\314\315\316E\"\317\320\321\322BB3\"\"\2054 \2054 \307\310\323!!\324\325\fD\205? C\205E C	\237$\325\237\306\211\211\211\211:\203\230 @\262\211A\262\242\262\211A\262\242\262@\262\326\327\306EEB\262\203\221 \204\205 \330\305!\210\331\332EEB\262A\262\202P \211\237\266\206\326\fE\324\333\327\334\335\325\205\271 \336\326\337BBD\340DD\341\342!D\343\326\344BB\324\345\346\347\350\351\352\353\354\fDEE\355BB\356\357\342!EEEE\360BB\"BEDC\205\355 \361\362BBBD\".BB\207" [cps--states cps--bindings cps--cleanup-function cps--value-symbol cps--state-symbol cps--cleanup-table-symbol nil gensym format "cps-current-value-" "cps-current-state-" cps--add-state "terminal" signal 'iter-end-of-sequence cps--transform-1 macroexpand-all cl-macrolet ((iter-yield (value) `(cps-internal-yield ,value))) "cps-iterator-finalizer-" let append setf lambda cl--assertion-failed push cons iterator (op value) cond (eq op :stash-finalizer) (value) (eq op :get-finalizer) (eq op :close) cps--make-close-iterator-form (eq op :next) (value) ((yielded nil)) unwind-protect prog1 catch 'cps--yield while t funcall ((setf yielded t)) unless yielded ((t (error "Unknown iterator operation %S" op))) (funcall iterator :stash-finalizer (make-finalizer (lambda nil (iter-close iterator)))) (iterator) macroexpand-all-environment] 30 (#$ . 18897)])#@221 When used inside a generator, yield control to caller.
The caller of `iter-next' receives VALUE, and the next call to
`iter-next' resumes execution with the form immediately following this
`iter-yield' call.

(fn VALUE)
(defalias 'iter-yield #[257 "\300\301!\207" [error "`iter-yield' used outside a generator"] 3 (#$ . 20377)])#@329 When used inside a generator function, delegate to a sub-iterator.
The values that the sub-iterator yields are passed directly to
the caller, and values supplied to `iter-next' are sent to the
sub-iterator.  `iter-yield-from' evaluates to the value that the
sub-iterator function returns via `iter-end-of-sequence'.

(fn VALUE)
(defalias 'iter-yield-from '(macro . #[257 "\300\301\302!!\300\301\303!!\304DC\305\306\304\307\310\311\312\313\314\315\316BBDEEE\317\320	DDF\321DEE\207" [gensym format "yield-from-result" "yield-from-value" let unwind-protect condition-case ((vs nil)) while t setf vs iter-yield iter-next (vs) iter-end-of-sequence cdr iter-close] 18 (#$ . 20712)]))#@285 Create a generator NAME that accepts ARGLIST as its arguments.
When called as a function, NAME returns an iterator value that
encapsulates the state of a computation that produces a sequence
of values.  Callers can retrieve each value using `iter-next'.

(fn NAME ARGLIST &rest BODY)
(defalias 'iter-defun '(macro . #[642 "\204 \301\300!\210\302!\211@A\303\304\305!C\"BBB\207" [lexical-binding cl--assertion-failed macroexp-parse-body defun append cps-generate-evaluator] 13 (#$ . 21403)]))
(byte-code "\300\301\302\303#\304\301\305\306#\210\300\301\307\310#\300\207" [function-put iter-defun lisp-indent-function defun put edebug-form-spec (&define name lambda-list lambda-doc &rest sexp) doc-string-elt 3] 5)#@113 Return a lambda generator.
`iter-lambda' is to `iter-defun' as `lambda' is to `defun'.

(fn ARGLIST &rest BODY)
(defalias 'iter-lambda '(macro . #[385 "\204 \301\300!\210\302!\211\242\243\303\304\305!C\"BB\207" [lexical-binding cl--assertion-failed macroexp-parse-body lambda append cps-generate-evaluator] 11 (#$ . 22131)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put iter-lambda lisp-indent-function defun put edebug-form-spec (&define lambda-list lambda-doc &rest sexp)] 5)#@41 Return a new iterator.

(fn &rest BODY)
(defalias 'iter-make '(macro . #[128 "\300!\207" [cps-generate-evaluator] 3 (#$ . 22643)]))
(put 'iter-make 'edebug-form-spec '(&rest sexp))#@59 Trivial iterator that always signals the end of sequence.
(defconst iter-empty #[514 "\300\301\302\"\207" [signal iter-end-of-sequence nil] 5 "\n\n(fn OP VAL)"] (#$ . 22830))#@261 Extract a value from an iterator.
YIELD-RESULT becomes the return value of `iter-yield' in the
context of the generator.

This routine raises the `iter-end-of-sequence' condition if the
iterator cannot supply more values.

(fn ITERATOR &optional YIELD-RESULT)
(defalias 'iter-next #[513 "\300\"\207" [:next] 5 (#$ . 23011)])#@122 Terminate an iterator early.
Run any `unwind-protect' handlers in scope at the point ITERATOR
is blocked.

(fn ITERATOR)
(defalias 'iter-close #[257 "\211\300\301\"\207" [:close nil] 4 (#$ . 23344)])#@183 Loop over values from an iterator.
Evaluate BODY with VAR bound to each value from ITERATOR.
Return the value with which ITERATOR finished iteration.

(fn (VAR ITERATOR) &rest BODY)
(defalias 'iter-do '(macro . #[128 "\211\203 \211A\262\242\202 \300\301\302GD\"\211G\303U\203$ \211A\262\242\202+ \300\301\302GD\"\242\304\305\306!!\304\305\307!!\304\305\310!!\304\305\311!!\312\313BDE\314\312	\315\316	D\317\320\n\321DE\320\322BBEFDC\323	\324\325\"BBEDF\207" [signal wrong-number-of-arguments iter-do 2 gensym format "iter-do-iterator-done" "iter-do-condition" "iter-do-iterator" "iter-do-result" let (nil) while condition-case iter-next iter-end-of-sequence setf cdr (t) unless append (t)] 21 (#$ . 23550)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put iter-do lisp-indent-function 1 put edebug-form-spec ((symbolp form) &rest sexp)] 5)#@17 

(fn CONSCELL)
(defalias 'cps--advance-for '(macro . #[257 "\300\301\302\303\304\305DDEE\306BBB\207" [condition-case nil progn setcar iter-next cdr ((iter-end-of-sequence nil))] 9 (#$ . 24441)]))#@17 

(fn ITERATOR)
(defalias 'cps--initialize-for '(macro . #[257 "\300\301\302!!\303\304\305EDC\306DE\207" [gensym format "cps--loop-temp" let cons nil cps--advance-for] 7 (#$ . 24647)]))#@40 Support `iter-by' in `loop'.

(fn VAR)
(defalias 'cps--handle-loop-for #[257 "\211A\242\301\302\303\304D\305BBBB\"\211\207" [cl--loop-args append for in cps--initialize-for (by 'cps--advance-for)] 8 (#$ . 24841)])
(byte-code "\300\301\302\303#\210\304\305\306\"\210\307\310!\207" [put iter-by cl-loop-for-handler cps--handle-loop-for eval-after-load elisp-mode #[0 "\300\301\302\"\207" [font-lock-add-keywords emacs-lisp-mode (("(\\(iter-defun\\)\\_>\\s *\\(\\(?:\\sw\\|\\s_\\)+\\)?" (1 font-lock-keyword-face nil t) (2 font-lock-function-name-face nil t)) ("(\\(iter-\\(?:next\\|lambda\\|yield\\|yield-from\\)\\)\\_>" (1 font-lock-keyword-face nil t)))] 3] provide generator] 4)
