60806040523480156200001157600080fd5b506040516200473d3803806200473d8339818101604052810190620000379190620006d6565b8383620000596200004d6200010460201b60201c565b6200010c60201b60201c565b8160019080519060200190620000719291906200037d565b5080600290805190602001906200008a9291906200037d565b50505081600d9080519060200190620000a59291906200037d565b50600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614620000fa57620000f981600001518260200151620001d060201b60201c565b5b5050505062000924565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001e06200037360201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000238906200082c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002aa906200089e565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600b60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b8280546200038b90620008ef565b90600052602060002090601f016020900481019282620003af5760008555620003fb565b82601f10620003ca57805160ff1916838001178555620003fb565b82800160010185558215620003fb579182015b82811115620003fa578251825591602001919060010190620003dd565b5b5090506200040a91906200040e565b5090565b5b80821115620004295760008160009055506001016200040f565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000496826200044b565b810181811067ffffffffffffffff82111715620004b857620004b76200045c565b5b80604052505050565b6000620004cd6200042d565b9050620004db82826200048b565b919050565b600067ffffffffffffffff821115620004fe57620004fd6200045c565b5b62000509826200044b565b9050602081019050919050565b60005b838110156200053657808201518184015260208101905062000519565b8381111562000546576000848401525b50505050565b6000620005636200055d84620004e0565b620004c1565b90508281526020810184848401111562000582576200058162000446565b5b6200058f84828562000516565b509392505050565b600082601f830112620005af57620005ae62000441565b5b8151620005c18482602086016200054c565b91505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005fc82620005cf565b9050919050565b6200060e81620005ef565b81146200061a57600080fd5b50565b6000815190506200062e8162000603565b92915050565b60006bffffffffffffffffffffffff82169050919050565b620006578162000634565b81146200066357600080fd5b50565b60008151905062000677816200064c565b92915050565b600060408284031215620006965762000695620005ca565b5b620006a26040620004c1565b90506000620006b4848285016200061d565b6000830152506020620006ca8482850162000666565b60208301525092915050565b60008060008060a08587031215620006f357620006f262000437565b5b600085015167ffffffffffffffff8111156200071457620007136200043c565b5b620007228782880162000597565b945050602085015167ffffffffffffffff8111156200074657620007456200043c565b5b620007548782880162000597565b935050604085015167ffffffffffffffff8111156200077857620007776200043c565b5b620007868782880162000597565b925050606062000799878288016200067d565b91505092959194509250565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000814602a83620007a5565b91506200082182620007b6565b604082019050919050565b60006020820190508181036000830152620008478162000805565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000886601983620007a5565b915062000893826200084e565b602082019050919050565b60006020820190508181036000830152620008b98162000877565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200090857607f821691505b6020821081036200091e576200091d620008c0565b5b50919050565b613e0980620009346000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de57806395d89b4111610097578063b88d4fde11610071578063b88d4fde14610439578063c87b56dd14610455578063e985e9c514610485578063f2fde38b146104b557610173565b806395d89b41146103e15780639abc8320146103ff578063a22cb4651461041d57610173565b80636352211e1461031f5780636c0360eb1461034f57806370a082311461036d578063715018a61461039d5780638da5cb5b146103a757806394d008ef146103c557610173565b806323b872dd1161013057806323b872dd1461024c5780632a55205a146102685780632f745c591461029957806342842e0e146102c957806344df8e70146102e55780634f6ccce7146102ef57610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f657806318160ddd146102125780631dd319cb14610230575b600080fd5b610192600480360381019061018d9190612850565b6104d1565b60405161019f9190612898565b60405180910390f35b6101b06104e3565b6040516101bd919061294c565b60405180910390f35b6101e060048036038101906101db91906129a4565b610575565b6040516101ed9190612a12565b60405180910390f35b610210600480360381019061020b9190612a59565b6105bb565b005b61021a6106d2565b6040516102279190612aa8565b60405180910390f35b61024a60048036038101906102459190612a59565b6106df565b005b61026660048036038101906102619190612ac3565b61076a565b005b610282600480360381019061027d9190612b16565b6107ca565b604051610290929190612b56565b60405180910390f35b6102b360048036038101906102ae9190612a59565b6109b4565b6040516102c09190612aa8565b60405180910390f35b6102e360048036038101906102de9190612ac3565b610a59565b005b6102ed610a79565b005b610309600480360381019061030491906129a4565b610afc565b6040516103169190612aa8565b60405180910390f35b610339600480360381019061033491906129a4565b610b6d565b6040516103469190612a12565b60405180910390f35b610357610c1e565b604051610364919061294c565b60405180910390f35b61038760048036038101906103829190612b7f565b610c46565b6040516103949190612aa8565b60405180910390f35b6103a5610cfd565b005b6103af610d11565b6040516103bc9190612a12565b60405180910390f35b6103df60048036038101906103da9190612c11565b610d3a565b005b6103e9610dbe565b6040516103f6919061294c565b60405180910390f35b610407610e50565b604051610414919061294c565b60405180910390f35b61043760048036038101906104329190612cb1565b610ede565b005b610453600480360381019061044e9190612e21565b610ef4565b005b61046f600480360381019061046a91906129a4565b610f56565b60405161047c919061294c565b60405180910390f35b61049f600480360381019061049a9190612ea4565b610fbe565b6040516104ac9190612898565b60405180910390f35b6104cf60048036038101906104ca9190612b7f565b611052565b005b60006104dc826110d5565b9050919050565b6060600180546104f290612f13565b80601f016020809104026020016040519081016040528092919081815260200182805461051e90612f13565b801561056b5780601f106105405761010080835404028352916020019161056b565b820191906000526020600020905b81548152906001019060200180831161054e57829003601f168201915b5050505050905090565b60006105808261114f565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105c682610b6d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062d90612fb6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661065561119a565b73ffffffffffffffffffffffffffffffffffffffff16148061068457506106838161067e61119a565b610fbe565b5b6106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba90613048565b60405180910390fd5b6106cd83836111a2565b505050565b6000600980549050905090565b6106e761125b565b8173ffffffffffffffffffffffffffffffffffffffff1661070782610b6d565b73ffffffffffffffffffffffffffffffffffffffff161461075d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610754906130b4565b60405180910390fd5b610766816112d9565b5050565b61077b61077561119a565b826112ee565b6107ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b190613146565b60405180910390fd5b6107c5838383611383565b505050565b6000806000600c60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361095f57600b6040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b60006109696115e9565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866109959190613195565b61099f919061321e565b90508160000151819350935050509250929050565b60006109bf83610c46565b8210610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f7906132c1565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a7483838360405180602001604052806000815250610ef4565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610a9a6000610b6d565b73ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906130b4565b60405180910390fd5b610afa60006112d9565b565b6000610b066106d2565b8210610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90613353565b60405180910390fd5b60098281548110610b5b57610b5a613373565b5b90600052602060002001549050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c906133ee565b60405180910390fd5b80915050919050565b6060600d604051602001610c3291906134f9565b604051602081830303815290604052905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad9061358d565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0561125b565b610d0f60006115f3565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d4261125b565b60008282905014610dae5760008282810190610d5e9190613646565b9050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610dac57610dab84826000015183602001516116b7565b5b505b610db8848461185e565b50505050565b606060028054610dcd90612f13565b80601f0160208091040260200160405190810160405280929190818152602001828054610df990612f13565b8015610e465780601f10610e1b57610100808354040283529160200191610e46565b820191906000526020600020905b815481529060010190602001808311610e2957829003601f168201915b5050505050905090565b600d8054610e5d90612f13565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8990612f13565b8015610ed65780601f10610eab57610100808354040283529160200191610ed6565b820191906000526020600020905b815481529060010190602001808311610eb957829003601f168201915b505050505081565b610ef0610ee961119a565b838361187c565b5050565b610f05610eff61119a565b836112ee565b610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90613146565b60405180910390fd5b610f50848484846119e8565b50505050565b6060610f618261114f565b6000610f6b611a44565b90506000815111610f8b5760405180602001604052806000815250610fb6565b80610f9584611ad6565b604051602001610fa69291906136a4565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61105a61125b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c09061373a565b60405180910390fd5b6110d2816115f3565b50565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611148575061114782611c36565b5b9050919050565b61115881611cb0565b611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e906133ee565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661121583610b6d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61126361119a565b73ffffffffffffffffffffffffffffffffffffffff16611281610d11565b73ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce906137a6565b60405180910390fd5b565b6112e281611d1c565b6112eb81611e39565b50565b6000806112fa83610b6d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061133c575061133b8185610fbe565b5b8061137a57508373ffffffffffffffffffffffffffffffffffffffff1661136284610575565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166113a382610b6d565b73ffffffffffffffffffffffffffffffffffffffff16146113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f090613838565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f906138ca565b60405180910390fd5b611473838383611e98565b61147e6000826111a2565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ce91906138ea565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611525919061391e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115e4838383611faa565b505050565b6000612710905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6116bf6115e9565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111561171d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611714906139e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613a52565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600c600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b611878828260405180602001604052806000815250611faf565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190613abe565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119db9190612898565b60405180910390a3505050565b6119f3848484611383565b6119ff8484848461200a565b611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590613b50565b60405180910390fd5b50505050565b6060600d8054611a5390612f13565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7f90612f13565b8015611acc5780601f10611aa157610100808354040283529160200191611acc565b820191906000526020600020905b815481529060010190602001808311611aaf57829003601f168201915b5050505050905090565b606060008203611b1d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c31565b600082905060005b60008214611b4f578080611b3890613b70565b915050600a82611b48919061321e565b9150611b25565b60008167ffffffffffffffff811115611b6b57611b6a612cf6565b5b6040519080825280601f01601f191660200182016040528015611b9d5781602001600182028036833780820191505090505b5090505b60008514611c2a57600182611bb691906138ea565b9150600a85611bc59190613bb8565b6030611bd1919061391e565b60f81b818381518110611be757611be6613373565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611c23919061321e565b9450611ba1565b8093505050505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ca95750611ca882612191565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000611d2782610b6d565b9050611d3581600084611e98565b611d406000836111a2565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d9091906138ea565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e3581600084611faa565b5050565b600c6000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b611ea3838383612273565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ee557611ee081612278565b611f24565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f2357611f2283826122c1565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f6657611f618161242e565b611fa5565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fa457611fa382826124ff565b5b5b505050565b505050565b611fb9838361257e565b611fc6600084848461200a565b612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc90613b50565b60405180910390fd5b505050565b600061202b8473ffffffffffffffffffffffffffffffffffffffff16612757565b15612184578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261205461119a565b8786866040518563ffffffff1660e01b81526004016120769493929190613c3e565b6020604051808303816000875af19250505080156120b257506040513d601f19601f820116820180604052508101906120af9190613c9f565b60015b612134573d80600081146120e2576040519150601f19603f3d011682016040523d82523d6000602084013e6120e7565b606091505b50600081510361212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390613b50565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612189565b600190505b949350505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061225c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061226c575061226b8261277a565b5b9050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016122ce84610c46565b6122d891906138ea565b90506000600860008481526020019081526020016000205490508181146123bd576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160098054905061244291906138ea565b90506000600a600084815260200190815260200160002054905060006009838154811061247257612471613373565b5b90600052602060002001549050806009838154811061249457612493613373565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a60008581526020019081526020016000206000905560098054806124e3576124e2613ccc565b5b6001900381819060005260206000200160009055905550505050565b600061250a83610c46565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e490613d47565b60405180910390fd5b6125f681611cb0565b15612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90613db3565b60405180910390fd5b61264260008383611e98565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612692919061391e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461275360008383611faa565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61282d816127f8565b811461283857600080fd5b50565b60008135905061284a81612824565b92915050565b600060208284031215612866576128656127ee565b5b60006128748482850161283b565b91505092915050565b60008115159050919050565b6128928161287d565b82525050565b60006020820190506128ad6000830184612889565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128ed5780820151818401526020810190506128d2565b838111156128fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061291e826128b3565b61292881856128be565b93506129388185602086016128cf565b61294181612902565b840191505092915050565b600060208201905081810360008301526129668184612913565b905092915050565b6000819050919050565b6129818161296e565b811461298c57600080fd5b50565b60008135905061299e81612978565b92915050565b6000602082840312156129ba576129b96127ee565b5b60006129c88482850161298f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129fc826129d1565b9050919050565b612a0c816129f1565b82525050565b6000602082019050612a276000830184612a03565b92915050565b612a36816129f1565b8114612a4157600080fd5b50565b600081359050612a5381612a2d565b92915050565b60008060408385031215612a7057612a6f6127ee565b5b6000612a7e85828601612a44565b9250506020612a8f8582860161298f565b9150509250929050565b612aa28161296e565b82525050565b6000602082019050612abd6000830184612a99565b92915050565b600080600060608486031215612adc57612adb6127ee565b5b6000612aea86828701612a44565b9350506020612afb86828701612a44565b9250506040612b0c8682870161298f565b9150509250925092565b60008060408385031215612b2d57612b2c6127ee565b5b6000612b3b8582860161298f565b9250506020612b4c8582860161298f565b9150509250929050565b6000604082019050612b6b6000830185612a03565b612b786020830184612a99565b9392505050565b600060208284031215612b9557612b946127ee565b5b6000612ba384828501612a44565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612bd157612bd0612bac565b5b8235905067ffffffffffffffff811115612bee57612bed612bb1565b5b602083019150836001820283011115612c0a57612c09612bb6565b5b9250929050565b60008060008060608587031215612c2b57612c2a6127ee565b5b6000612c3987828801612a44565b9450506020612c4a8782880161298f565b935050604085013567ffffffffffffffff811115612c6b57612c6a6127f3565b5b612c7787828801612bbb565b925092505092959194509250565b612c8e8161287d565b8114612c9957600080fd5b50565b600081359050612cab81612c85565b92915050565b60008060408385031215612cc857612cc76127ee565b5b6000612cd685828601612a44565b9250506020612ce785828601612c9c565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d2e82612902565b810181811067ffffffffffffffff82111715612d4d57612d4c612cf6565b5b80604052505050565b6000612d606127e4565b9050612d6c8282612d25565b919050565b600067ffffffffffffffff821115612d8c57612d8b612cf6565b5b612d9582612902565b9050602081019050919050565b82818337600083830152505050565b6000612dc4612dbf84612d71565b612d56565b905082815260208101848484011115612de057612ddf612cf1565b5b612deb848285612da2565b509392505050565b600082601f830112612e0857612e07612bac565b5b8135612e18848260208601612db1565b91505092915050565b60008060008060808587031215612e3b57612e3a6127ee565b5b6000612e4987828801612a44565b9450506020612e5a87828801612a44565b9350506040612e6b8782880161298f565b925050606085013567ffffffffffffffff811115612e8c57612e8b6127f3565b5b612e9887828801612df3565b91505092959194509250565b60008060408385031215612ebb57612eba6127ee565b5b6000612ec985828601612a44565b9250506020612eda85828601612a44565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f2b57607f821691505b602082108103612f3e57612f3d612ee4565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fa06021836128be565b9150612fab82612f44565b604082019050919050565b60006020820190508181036000830152612fcf81612f93565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000613032603e836128be565b915061303d82612fd6565b604082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b7f596f7520646f6e2774206f776e2074686973206e667421000000000000000000600082015250565b600061309e6017836128be565b91506130a982613068565b602082019050919050565b600060208201905081810360008301526130cd81613091565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000613130602e836128be565b915061313b826130d4565b604082019050919050565b6000602082019050818103600083015261315f81613123565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131a08261296e565b91506131ab8361296e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131e4576131e3613166565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132298261296e565b91506132348361296e565b925082613244576132436131ef565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006132ab602b836128be565b91506132b68261324f565b604082019050919050565b600060208201905081810360008301526132da8161329e565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061333d602c836128be565b9150613348826132e1565b604082019050919050565b6000602082019050818103600083015261336c81613330565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006133d86018836128be565b91506133e3826133a2565b602082019050919050565b60006020820190508181036000830152613407816133cb565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461343b81612f13565b613445818661340e565b945060018216600081146134605760018114613471576134a4565b60ff198316865281860193506134a4565b61347a85613419565b60005b8381101561349c5781548189015260018201915060208101905061347d565b838801955050505b50505092915050565b7f7b69647d00000000000000000000000000000000000000000000000000000000600082015250565b60006134e360048361340e565b91506134ee826134ad565b600482019050919050565b6000613505828461342e565b9150613510826134d6565b915081905092915050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006135776029836128be565b91506135828261351b565b604082019050919050565b600060208201905081810360008301526135a68161356a565b9050919050565b600080fd5b60006bffffffffffffffffffffffff82169050919050565b6135d3816135b2565b81146135de57600080fd5b50565b6000813590506135f0816135ca565b92915050565b60006040828403121561360c5761360b6135ad565b5b6136166040612d56565b9050600061362684828501612a44565b600083015250602061363a848285016135e1565b60208301525092915050565b60006040828403121561365c5761365b6127ee565b5b600061366a848285016135f6565b91505092915050565b600061367e826128b3565b613688818561340e565b93506136988185602086016128cf565b80840191505092915050565b60006136b08285613673565b91506136bc8284613673565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137246026836128be565b915061372f826136c8565b604082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137906020836128be565b915061379b8261375a565b602082019050919050565b600060208201905081810360008301526137bf81613783565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006138226025836128be565b915061382d826137c6565b604082019050919050565b6000602082019050818103600083015261385181613815565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138b46024836128be565b91506138bf82613858565b604082019050919050565b600060208201905081810360008301526138e3816138a7565b9050919050565b60006138f58261296e565b91506139008361296e565b92508282101561391357613912613166565b5b828203905092915050565b60006139298261296e565b91506139348361296e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561396957613968613166565b5b828201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b60006139d0602a836128be565b91506139db82613974565b604082019050919050565b600060208201905081810360008301526139ff816139c3565b9050919050565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b6000613a3c601b836128be565b9150613a4782613a06565b602082019050919050565b60006020820190508181036000830152613a6b81613a2f565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613aa86019836128be565b9150613ab382613a72565b602082019050919050565b60006020820190508181036000830152613ad781613a9b565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613b3a6032836128be565b9150613b4582613ade565b604082019050919050565b60006020820190508181036000830152613b6981613b2d565b9050919050565b6000613b7b8261296e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bad57613bac613166565b5b600182019050919050565b6000613bc38261296e565b9150613bce8361296e565b925082613bde57613bdd6131ef565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000613c1082613be9565b613c1a8185613bf4565b9350613c2a8185602086016128cf565b613c3381612902565b840191505092915050565b6000608082019050613c536000830187612a03565b613c606020830186612a03565b613c6d6040830185612a99565b8181036060830152613c7f8184613c05565b905095945050505050565b600081519050613c9981612824565b92915050565b600060208284031215613cb557613cb46127ee565b5b6000613cc384828501613c8a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613d316020836128be565b9150613d3c82613cfb565b602082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613d9d601c836128be565b9150613da882613d67565b602082019050919050565b60006020820190508181036000830152613dcc81613d90565b905091905056fea264697066735822122025370d7831b5ae51e7110c92c375bdb15834940c9a6964aaefce1a2d99a7a26064736f6c634300080d003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000006c10d167ffb44b5e5c90074285a60e7c11e9709500000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000000000000000000000000000000000000000000852756279416c657800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035241580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f6d6574612e706f6c6b616d6f6e2e636f6d2f6d6574613f69643d000000000000000000000000000000000000000000000000000000000000