(command.CommandList children: [ (command.FuncDef name: _ssh_queries body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[11]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ('cipher cipher-auth mac kex key protocol-version'))} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [14 32] ) } ] ) } spids: [11] ) ] spids: [11] ) ] spids: [8] ) spids: [4 7] ) (command.FuncDef name: _ssh_query body: (command.BraceGroup children: [ (command.SimpleCommand words: [ { (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(ssh)}) spids: [46 50] ) } {(-Q)} {($ VSub_Number '$2')} ] redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) ] spids: [43] ) spids: [39 42] ) (command.FuncDef name: _ssh_ciphers body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ciphers spids:[71]) op: Equal rhs: {(SQ <'$( _ssh_query "$1" cipher )'>)} spids: [71] ) ] spids: [69] ) (command.AndOr ops: [Op_DPipe] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ VSub_DollarName '$ciphers')}) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ciphers spids:[85]) op: Equal rhs: { (DQ ('3des-cbc aes128-cbc aes192-cbc aes256-cbc\n') ( ' aes128-ctr aes192-ctr aes256-ctr arcfour128 arcfour256 arcfour\n' ) (' blowfish-cbc cast128-cbc') ) } spids: [85] ) ] spids: [85] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[93]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$ciphers'))} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [96 112] ) } ] ) } spids: [93] ) ] spids: [93] ) ] spids: [66] ) spids: [62 65] ) (command.FuncDef name: _ssh_macs body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:macs spids:[128]) op: Equal rhs: {(SQ <'$( _ssh_query "$1" mac )'>)} spids: [128] ) ] spids: [126] ) (command.AndOr ops: [Op_DPipe] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ VSub_DollarName '$macs')}) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:macs spids:[142]) op: Equal rhs: { (DQ ('hmac-md5 hmac-sha1 umac-64@openssh.com hmac-ripemd160\n') (' hmac-sha1-96 hmac-md5-96') ) } spids: [142] ) ] spids: [142] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[149]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$macs'))} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [152 168] ) } ] ) } spids: [149] ) ] spids: [149] ) ] spids: [123] ) spids: [119 122] ) (command.FuncDef name: _ssh_options body: (command.BraceGroup children: [ (C {(compopt)} {(-o)} {(nospace)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[189]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-S)} {(Lit_Other '=')} {(-W)} { (SQ <'AddressFamily BatchMode BindAddress\n'> < ' ChallengeResponseAuthentication CheckHostIP Cipher Ciphers\n' > <' ClearAllForwardings Compression CompressionLevel ConnectionAttempts\n'> < ' ConnectTimeout ControlMaster ControlPath ControlPersist DynamicForward\n' > <' EnableSSHKeysign EscapeChar ExitOnForwardFailure ForwardAgent\n'> < ' ForwardX11 ForwardX11Timeout ForwardX11Trusted GatewayPorts\n' > <' GlobalKnownHostsFile GSSAPIAuthentication GSSAPIClientIdentity\n'> < ' GSSAPIDelegateCredentials GSSAPIKeyExchange GSSAPIRenewalForcesRekey\n' > <' GSSAPIServerIdentity GSSAPITrustDns HashKnownHosts Host\n'> < ' HostbasedAuthentication HostKeyAlgorithms HostKeyAlias HostName\n' > <' IdentityFile IdentitiesOnly IPQoS KbdInteractiveDevices KexAlgorithms\n'> <' LocalCommand LocalForward LogLevel MACs\n'> <' NoHostAuthenticationForLocalhost NumberOfPasswordPrompts\n'> < ' PasswordAuthentication PermitLocalCommand PKCS11Provider Port\n' > <' PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication\n'> < ' RekeyLimit RemoteForward RequestTTY RhostsRSAAuthentication\n' > <' RSAAuthentication SendEnv ServerAliveCountMax ServerAliveInterval\n'> < ' SmartcardDevice StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice\n' > <' UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS\n'> <' VisualHostKey XAuthLocation'> ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [192 231] ) } ] ) } spids: [189] ) ] spids: [189] ) ] spids: [179] ) spids: [175 178] ) (command.FuncDef name: _ssh_suboption body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:prev spids:[266]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{('=*')}) spids: [267 271] ) } spids: [266] ) (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[273]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{('*=')}) spids: [274 278] ) } spids: [273] ) ] spids: [264] ) (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [ {(BatchMode)} {(ChallengeResponseAuthentication)} {(CheckHostIP)} {(ClearAllForwardings)} {(ControlPersist)} {(Compression)} {(EnableSSHKeysign)} {(ExitOnForwardFailure)} {(ForwardAgent)} {(ForwardX11)} {(ForwardX11Trusted)} {(GatewayPorts)} {(GSSAPIAuthentication)} {(GSSAPIKeyExchange)} {(GSSAPIDelegateCredentials)} {(GSSAPIRenewalForcesRekey)} {(GSSAPITrustDns)} {(HashKnownHosts)} {(HostbasedAuthentication)} {(IdentitiesOnly)} {(KbdInteractiveAuthentication)} {(KbdInteractiveDevices)} {(NoHostAuthenticationForLocalhost)} {(PasswordAuthentication)} {(PubkeyAuthentication)} {(RhostsRSAAuthentication)} {(RSAAuthentication)} {(StrictHostKeyChecking)} {(TCPKeepAlive)} {(UsePrivilegedPort)} {(VerifyHostKeyDNS)} {(VisualHostKey)} ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[375]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'yes no'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [378 394] ) } ] ) } spids: [375] ) ] spids: [375] ) ] spids: [289 372 399 16777215] ) (case_arm pat_list: [{(AddressFamily)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[406]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'any inet inet6'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [409 425] ) } ] ) } spids: [406] ) ] spids: [406] ) ] spids: [402 403 430 16777215] ) (case_arm pat_list: [{(BindAddress)}] action: [(C {(_ip_addresses)})] spids: [433 434 440 16777215] ) (case_arm pat_list: [{(Cipher)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[447]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'blowfish des 3des'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [450 466] ) } ] ) } spids: [447] ) ] spids: [447] ) ] spids: [443 444 471 16777215] ) (case_arm pat_list: [{(IPQoS)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[478]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'af1{1..4} af2{2..3} af3{1..3} af4{1..3}\n'> < ' cs{0..7} ef lowdelay throughput reliability' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [481 498] ) } ] ) } spids: [478] ) ] spids: [478] ) ] spids: [474 475 503 16777215] ) (case_arm pat_list: [{(HostbasedKeyTypes)} {(HostKeyAlgorithms)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[512]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _ssh_query "$2" key )'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [515 531] ) } ] ) } spids: [512] ) ] spids: [512] ) ] spids: [506 509 536 16777215] ) (case_arm pat_list: [{(KexAlgorithms)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[543]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _ssh_query "$2" kex )'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [546 562] ) } ] ) } spids: [543] ) ] spids: [543] ) ] spids: [539 540 567 16777215] ) (case_arm pat_list: [{(Protocol)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[574]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'1 2 1,2 2,1'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [577 593] ) } ] ) } spids: [574] ) ] spids: [574] ) ] spids: [570 571 598 16777215] ) (case_arm pat_list: [{(RequestTTY)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[605]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'no yes force auto'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [608 624] ) } ] ) } spids: [605] ) ] spids: [605] ) ] spids: [601 602 629 16777215] ) (case_arm pat_list: [{(Tunnel)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[636]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'yes no point-to-point ethernet'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [639 657] ) } ] ) } spids: [636] ) ] spids: [636] ) ] spids: [632 633 662 16777215] ) (case_arm pat_list: [{(PreferredAuthentications)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[669]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'gssapi-with-mic host-based publickey\n'> <' keyboard-interactive password'> ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [672 689] ) } ] ) } spids: [669] ) ] spids: [669] ) ] spids: [665 666 694 16777215] ) (case_arm pat_list: [{(MACs)}] action: [(C {(_ssh_macs)} {(DQ ($ VSub_Number '$2'))})] spids: [697 698 708 16777215] ) (case_arm pat_list: [{(Ciphers)}] action: [(C {(_ssh_ciphers)} {(DQ ($ VSub_Number '$2'))})] spids: [711 712 722 16777215] ) ] spids: [282 286 725] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [257] ) spids: [253 256] ) (command.FuncDef name: _ssh_suboption_check body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cureq spids:[757]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(_get_cword)} {(Lit_Other ':') (Lit_Other '=')})] ) left_token: <Left_Backtick '`'> spids: [758 763] ) } spids: [757] ) (assign_pair lhs: (lhs_expr.LhsName name:preveq spids:[765]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(_get_pword)} {(Lit_Other ':') (Lit_Other '=')})] ) left_token: <Left_Backtick '`'> spids: [766 771] ) } spids: [765] ) ] spids: [755] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$cureq')} right: {(Lit_Other '*') (BoolBinary_GlobEqual '=') (Lit_Other '*')} ) right: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$preveq')} right: {(BoolUnary_o -o)} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_ssh_suboption)} {($ VSub_DollarName '$cureq')} {(DQ ($ VSub_Number '$1'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_QMark '$?')} ) ] spids: [16777215 797] ) ] spids: [16777215 814] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [748] ) spids: [744 747] ) (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (command.FuncDef name: _ssh body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[833]) op: Equal spids: [833] ) (assign_pair lhs: (lhs_expr.LhsName name:prev spids:[835]) op: Equal spids: [835] ) (assign_pair lhs: (lhs_expr.LhsName name:words spids:[837]) op: Equal spids: [837] ) (assign_pair lhs: (lhs_expr.LhsName name:cword spids:[839]) op: Equal spids: [839] ) ] spids: [831] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(_init_completion)} {(-n)} {(Lit_Other ':')}) (command.ControlFlow token:<ControlFlow_Return return>) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:configfile spids:[856]) op: Equal spids: [856] ) ] spids: [854] ) (command.Assignment keyword: Assign_Local flags: [-a] pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:config spids:[863]) op: Equal spids: [863] ) ] spids: [859] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(_ssh_suboption_check)} {(DQ ($ VSub_Number '$1'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(-F)} {(-i)} {(-S)}] action: [ (C {(_filedir)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [888 893 904 16777215] ) (case_arm pat_list: [{(-c)}] action: [ (C {(_ssh_ciphers)} {(DQ ($ VSub_Number '$1'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [907 908 923 16777215] ) (case_arm pat_list: [{(-m)}] action: [ (C {(_ssh_macs)} {(DQ ($ VSub_Number '$1'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [926 927 942 16777215] ) (case_arm pat_list: [{(-l)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[949]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-u)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [952 964] ) } ] ) } spids: [949] ) ] spids: [949] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [945 946 974 16777215] ) (case_arm pat_list: [{(-O)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[981]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'check forward exit stop'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [984 1000] ) } ] ) } spids: [981] ) ] spids: [981] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [977 978 1010 16777215] ) (case_arm pat_list: [{(-o)}] action: [ (C {(_ssh_options)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1013 1014 1025 16777215] ) (case_arm pat_list: [{(-Q)}] action: [ (C {(_ssh_queries)} {(DQ ($ VSub_Number '$1'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1028 1029 1044 16777215] ) (case_arm pat_list: [{(-w)}] action: [ (C {(_available_interfaces)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1047 1048 1059 16777215] ) (case_arm pat_list: [{(-b)}] action: [ (C {(_ip_addresses)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1062 1063 1074 16777215] ) (case_arm pat_list: [{(-D)} {(-e)} {(-I)} {(-L)} {(-p)} {(-R)} {(-W)}] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [1077 1090 1098 16777215] ) ] spids: [881 885 1101] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$cur'))} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[1124]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{(-F)}) spids: [1125 1129] ) } spids: [1124] ) ] spids: [1124] ) (C {(_filedir)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1139]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (bracket_op.WholeArray op_id:Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {(-F)} replace_mode: Lit_Pound spids: [1148] ) spids: [1143 1152] ) ) } ] ) } spids: [1139] ) ] spids: [1139] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[1158]) op: Equal rhs: {(-F) ($ VSub_DollarName '$cur')} spids: [1158] ) ] spids: [1158] ) ] spids: [16777215 1121] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$cur'))} right: {(-) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1185]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "$1" )'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1188 1204] ) } ] ) } spids: [1185] ) ] spids: [1185] ) ] spids: [1166 1182] ) ] else_action: [ (C {(set)} {(--)} { (DQ (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.WholeArray op_id:Lit_At) spids: [1221 1226] ) ) } ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: {($ VSub_Pound '$#')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: { (word_part.BracedVarSub token: <VSub_Number 1> prefix_op: VSub_Pound spids: [1267 1270] ) } right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: configfile spids: [1282] ) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dequote)} { (DQ (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w: {(Lit_Digits 2)} ) ) spids: [1288 1292] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1284 1294] ) ) } spids: [1282] ) ] spids: [1282] ) ] spids: [16777215 1279] ) ] else_action: [ (C {(shift)}) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ VSub_Number '$1')}) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: configfile spids: [1312] ) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dequote)} {(DQ ($ VSub_Number '$1'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1314 1320] ) ) } spids: [1312] ) ] spids: [1312] ) ] ) ] spids: [1298 1324] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 1260] ) ] spids: [16777215 1330] ) (C {(shift)}) ] spids: [1243 1336] ) ) (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ VSub_DollarName '$configfile'))} {(DQ ($ VSub_DollarName '$cur'))} ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:args spids:[1357]) op: Equal spids: [1357] ) ] spids: [1355] ) (C {(_count_args)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: {($ VSub_DollarName '$args')} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(compopt)} {(-o)} {(filenames)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1386]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-c)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1389 1401] ) } ] ) } spids: [1386] ) ] spids: [1386] ) ] spids: [16777215 1376] ) ] spids: [16777215 1406] ) ] spids: [1209 1409] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [828] ) spids: [824 827] ) (C {(shopt)} {(-u)} {(hostcomplete)}) (C {(complete)} {(-F)} {(_ssh)} {(ssh)} {(slogin)} {(autossh)}) ] ) (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (command.FuncDef name: _sftp body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[1457]) op: Equal spids: [1457] ) (assign_pair lhs: (lhs_expr.LhsName name:prev spids:[1459]) op: Equal spids: [1459] ) (assign_pair lhs: (lhs_expr.LhsName name:words spids:[1461]) op: Equal spids: [1461] ) (assign_pair lhs: (lhs_expr.LhsName name:cword spids:[1463]) op: Equal spids: [1463] ) ] spids: [1455] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(_init_completion)}) (command.ControlFlow token:<ControlFlow_Return return>) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:configfile spids:[1476]) op: Equal spids: [1476] ) ] spids: [1474] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(_ssh_suboption_check)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(-b)} {(-F)} {(-i)}] action: [ (C {(_filedir)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1497 1502 1513 16777215] ) (case_arm pat_list: [{(-o)}] action: [ (C {(_ssh_options)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1516 1517 1528 16777215] ) (case_arm pat_list: [{(-c)}] action: [ (C {(_ssh_ciphers)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1531 1532 1543 16777215] ) (case_arm pat_list: [{(-S)}] action: [ (C {(_command)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1546 1547 1558 16777215] ) (case_arm pat_list: [{(-B)} {(-D)} {(-l)} {(-P)} {(-R)} {(-s)}] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [1561 1572 1580 16777215] ) ] spids: [1490 1494 1583] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$cur'))} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[1606]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{(-F)}) spids: [1607 1611] ) } spids: [1606] ) ] spids: [1606] ) (C {(_filedir)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1621]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (bracket_op.WholeArray op_id:Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {(-F)} replace_mode: Lit_Pound spids: [1630] ) spids: [1625 1634] ) ) } ] ) } spids: [1621] ) ] spids: [1621] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[1640]) op: Equal rhs: {(-F) ($ VSub_DollarName '$cur')} spids: [1640] ) ] spids: [1640] ) ] spids: [16777215 1603] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$cur'))} right: {(-) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1667]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "$1" )'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1670 1686] ) } ] ) } spids: [1667] ) ] spids: [1667] ) ] spids: [1648 1664] ) ] else_action: [ (C {(set)} {(--)} { (DQ (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.WholeArray op_id:Lit_At) spids: [1703 1708] ) ) } ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: {($ VSub_Pound '$#')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: { (word_part.BracedVarSub token: <VSub_Number 1> prefix_op: VSub_Pound spids: [1749 1752] ) } right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: configfile spids: [1764] ) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dequote)} { (DQ (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w: {(Lit_Digits 2)} ) ) spids: [1770 1774] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1766 1776] ) ) } spids: [1764] ) ] spids: [1764] ) ] spids: [16777215 1761] ) ] else_action: [ (C {(shift)}) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ VSub_Number '$1')}) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: configfile spids: [1794] ) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dequote)} {(DQ ($ VSub_Number '$1'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1796 1802] ) ) } spids: [1794] ) ] spids: [1794] ) ] ) ] spids: [1780 1806] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 1742] ) ] spids: [16777215 1812] ) (C {(shift)}) ] spids: [1725 1818] ) ) (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ VSub_DollarName '$configfile'))} {(DQ ($ VSub_DollarName '$cur'))} ) ] spids: [1691 1836] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [1452] ) spids: [1448 1451] ) (C {(shopt)} {(-u)} {(hostcomplete)}) (C {(complete)} {(-F)} {(_sftp)} {(sftp)}) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_scp_path_esc spids:[1868]) op: Equal rhs: {(SQ <'[][(){}<>",:;^&!$=?`|\\\\'>) (DQ ("'")) (SQ <'[:space:]]'>)} spids: [1868] ) ] spids: [1868] ) (command.FuncDef name: _scp_remote_files body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:IFS spids:[1895]) op: Equal rhs: { (word_part.SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\n'>] spids: [1896 1898] ) } spids: [1895] ) ] spids: [1893] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[1906]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (':')} replace: {(':')} replace_mode: Undefined_Tok spids: [1909] ) spids: [1907 1914] ) } spids: [1906] ) ] spids: [1906] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:userhost spids:[1920]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.StringUnary op_id: VOp1_DPercent arg_word: {('?(') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('):*') } ) spids: [1921 1927] ) } spids: [1920] ) ] spids: [1918] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:path spids:[1932]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{('*:')}) spids: [1933 1937] ) } spids: [1932] ) ] spids: [1930] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:path spids:[1945]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [ {(sed)} {(-e)} {(SQ <'s/\\\\\\\\\\\\\\('>) ($ VSub_DollarName '$_scp_path_esc') (SQ <'\\)/\\\\\\1/g'>) } ] redirects: [ (redir.Redir op: <Redir_TLess '<<<'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$path'))} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1946 1965] ) } spids: [1945] ) ] spids: [1945] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_z child: {($ VSub_DollarName '$path')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:path spids:[1987]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [ {(ssh)} {(-o)} {(SQ <'Batchmode yes'>)} {($ VSub_DollarName '$userhost')} {(pwd)} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1988 2003] ) } spids: [1987] ) ] spids: [1987] ) ] spids: [16777215 1984] ) ] spids: [16777215 2006] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:files spids:[2012]) op: Equal spids: [2012] ) ] spids: [2010] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(BoolUnary_d -d)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:files spids:[2035]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.SimpleCommand words: [ {(ssh)} {(-o)} {(SQ <'Batchmode yes'>)} {($ VSub_DollarName '$userhost')} {(command)} {(ls)} {(-aF1dL)} {(DQ ($ VSub_DollarName '$path') ('*'))} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(sed)} {(-e)} {(SQ <s/>) ($ VSub_DollarName '$_scp_path_esc') (SQ <'/\\\\\\\\\\\\&/g'>) } {(-e)} {(SQ <'/[^\\/]$/d'>)} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2036 2086] ) } spids: [2035] ) ] spids: [2035] ) ] spids: [16777215 2028] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:files spids:[2100]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.SimpleCommand words: [ {(ssh)} {(-o)} {(SQ <'Batchmode yes'>)} {($ VSub_DollarName '$userhost')} {(command)} {(ls)} {(-aF1dL)} {(DQ ($ VSub_DollarName '$path') ('*'))} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(sed)} {(-e)} {(SQ <s/>) ($ VSub_DollarName '$_scp_path_esc') (SQ <'/\\\\\\\\\\\\&/g'>) } {(-e)} {(SQ <'s/[*@|=]$//g'>)} {(-e)} {(SQ <'s/[^\\/]$/& /g'>)} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2101 2159] ) } spids: [2100] ) ] spids: [2100] ) ] spids: [2089 2162] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2165]) op: PlusEqual rhs: {(word_part.ArrayLiteralPart words:[{($ VSub_DollarName '$files')}])} spids: [2165] ) ] spids: [2165] ) ] spids: [1890] ) spids: [1886 1889] ) (command.FuncDef name: _scp_local_files body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:IFS spids:[2196]) op: Equal rhs: { (word_part.SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\n'>] spids: [2197 2199] ) } spids: [2196] ) ] spids: [2194] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:dirsonly spids:[2205]) op: Equal rhs: {(false)} spids: [2205] ) ] spids: [2203] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(BoolUnary_d -d)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:dirsonly spids:[2225]) op: Equal rhs: {(true)} spids: [2225] ) ] spids: [2225] ) (C {(shift)}) ] spids: [16777215 2222] ) ] spids: [16777215 2232] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {($ VSub_DollarName '$dirsonly')}) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2245]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.SimpleCommand words: [ {(command)} {(ls)} {(-aF1dL)} {($ VSub_DollarName '$cur') (Lit_Other '*')} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(sed)} {(-e)} { (DQ (s/) ($ VSub_DollarName '$_scp_path_esc') (/) (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('&/g') ) } {(-e)} {(SQ <'/[^\\/]$/d'>)} {(-e)} {(DQ ('s/^/') ($ VSub_Number '$1') (/))} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2248 2292] ) } ] ) } spids: [2245] ) ] spids: [2245] ) ] spids: [16777215 2242] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2300]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.SimpleCommand words: [ {(command)} {(ls)} {(-aF1dL)} {($ VSub_DollarName '$cur') (Lit_Other '*')} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(sed)} {(-e)} { (DQ (s/) ($ VSub_DollarName '$_scp_path_esc') (/) (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('&/g') ) } {(-e)} {(SQ <'s/[*@|=]$//g'>)} {(-e)} {(SQ <'s/[^\\/]$/& /g'>)} {(-e)} {(DQ ('s/^/') ($ VSub_Number '$1') (/))} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2303 2355] ) } ] ) } spids: [2300] ) ] spids: [2300] ) ] spids: [2297 2360] ) ] spids: [2191] ) spids: [2187 2190] ) (command.AndOr ops: [Op_DAmp] children: [ (command.FuncDef name: _scp body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[2380]) op: Equal spids: [2380] ) (assign_pair lhs: (lhs_expr.LhsName name:prev spids:[2382]) op: Equal spids: [2382] ) (assign_pair lhs: (lhs_expr.LhsName name:words spids:[2384]) op: Equal spids: [2384] ) (assign_pair lhs: (lhs_expr.LhsName name:cword spids:[2386]) op: Equal spids: [2386] ) ] spids: [2378] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(_init_completion)} {(-n)} {(Lit_Other ':')}) (command.ControlFlow token:<ControlFlow_Return return>) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:configfile spids:[2403]) op: Equal spids: [2403] ) (assign_pair lhs: (lhs_expr.LhsName name:prefix spids:[2405]) op: Equal spids: [2405] ) ] spids: [2401] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(_ssh_suboption_check)}) (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2416]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (bracket_op.WholeArray op_id:Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {(' ')} replace_mode: Lit_Percent spids: [2425] ) spids: [2420 2429] ) ) } ] ) } spids: [2416] ) ] spids: [2416] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2413] ) ] ) (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(-l)} {(-P)}] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [2451 2454 2462 16777215] ) (case_arm pat_list: [{(-F)} {(-i)}] action: [ (C {(_filedir)}) (C {(compopt)} {(Lit_Other '+') (o)} {(nospace)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2465 2468 2487 16777215] ) (case_arm pat_list: [{(-c)}] action: [ (C {(_ssh_ciphers)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2497]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (bracket_op.WholeArray op_id:Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {(' ')} replace_mode: Lit_Percent spids: [2506] ) spids: [2501 2510] ) ) } ] ) } spids: [2497] ) ] spids: [2497] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2490 2491 2521 16777215] ) (case_arm pat_list: [{(-o)}] action: [ (C {(_ssh_options)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2524 2525 2536 16777215] ) (case_arm pat_list: [{(-S)}] action: [ (C {(_command)}) (C {(compopt)} {(Lit_Other '+') (o)} {(nospace)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2539 2540 2559 16777215] ) ] spids: [2444 2448 2562] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(_expand)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (command.Case to_match: {($ VSub_DollarName '$cur')} arms: [ (case_arm pat_list: [ { (word_part.ExtGlobPart op: <ExtGlob_Bang '!('> arms: [{(Lit_Other '*') (':') (Lit_Other '*')}] spids: [2583 2587] ) (/) (Lit_Other '*') } {(Lit_Other '[') (.) (Lit_TildeLike '~') (Lit_Other ']') (Lit_Other '*')} ] spids: [2583 2596 2598 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (Lit_Other ':') (Lit_Other '*')}] action: [ (command.Sentence child: (C {(_scp_remote_files)}) terminator: <Op_Semi ';'> ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2604 2607 2617 16777215] ) ] spids: [2576 2580 2620] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$cur'))} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[2643]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{(-F)}) spids: [2644 2648] ) } spids: [2643] ) ] spids: [2643] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:prefix spids:[2651]) op: Equal rhs: {(-F)} spids: [2651] ) ] spids: [2651] ) ] spids: [16777215 2640] ) ] else_action: [ (C {(set)} {(--)} { (DQ (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.WholeArray op_id:Lit_At) spids: [2667 2672] ) ) } ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: {($ VSub_Pound '$#')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: { (word_part.BracedVarSub token: <VSub_Number 1> prefix_op: VSub_Pound spids: [2713 2716] ) } right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: configfile spids: [2728] ) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dequote)} { (DQ (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w: {(Lit_Digits 2)} ) ) spids: [2734 2738] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [2730 2740] ) ) } spids: [2728] ) ] spids: [2728] ) ] spids: [16777215 2725] ) ] else_action: [ (C {(shift)}) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ VSub_Number '$1')}) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: configfile spids: [2758] ) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dequote)} {(DQ ($ VSub_Number '$1'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2760 2766] ) ) } spids: [2758] ) ] spids: [2758] ) ] ) ] spids: [2744 2770] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 2706] ) ] spids: [16777215 2776] ) (C {(shift)}) ] spids: [2689 2782] ) ) (command.Case to_match: {($ VSub_DollarName '$cur')} arms: [ (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2798]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "${words[0]}" )'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2801 2819] ) } ] ) } spids: [2798] ) ] spids: [2798] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2824]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (bracket_op.WholeArray op_id:Lit_At) suffix_op: (suffix_op.PatSub pat: {} replace: {(' ')} replace_mode: Lit_Percent spids: [2833] ) spids: [2828 2837] ) ) } ] ) } spids: [2824] ) ] spids: [2824] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2793 2795 2848 16777215] ) (case_arm pat_list: [ {(Lit_Other '*') (/) (Lit_Other '*')} {(Lit_Other '[') (.) (Lit_TildeLike '~') (Lit_Other ']') (Lit_Other '*')} ] spids: [2851 2860 2867 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(_known_hosts_real)} {(-c)} {(-a)} {(-F)} {(DQ ($ VSub_DollarName '$configfile'))} {(DQ ($ VSub_DollarName '$cur'))} ) ] spids: [2870 2871 2891 16777215] ) ] spids: [2786 2790 2894] ) ] spids: [2655 2897] ) (C {(_scp_local_files)} {(DQ ($ VSub_DollarName '$prefix'))}) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2375] ) spids: [2371 2374] ) (C {(complete)} {(-F)} {(_scp)} {(-o)} {(nospace)} {(scp)}) ] ) ] )