60806040526000606e553480156200001657600080fd5b50604051620049223803806200492283398181016040528101906200003c919062000739565b6040518060400160405280601081526020017f58204d41524b53205448452053504f54000000000000000000000000000000008152506040518060400160405280600481526020017f584d5453000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000c0929190620003ac565b508060019080519060200190620000d9929190620003ac565b5050506001600681905550620000f5336200018160201b60201c565b6200010a6000801b336200024760201b60201c565b60005b81518110156200015f57620001496000801b838381518110620001355762000134620007be565b5b60200260200101516200024760201b60201c565b8080620001569062000826565b9150506200010d565b50816070908051906020019062000178929190620003ac565b505050620008d7565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff6a7092513e1f3f720c1d0ad65eb323494afe10d43e19dc4a40bac61ade7579160405160405180910390a35050565b6200025982826200033960201b60201c565b620003355760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002da620003a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b828054620003ba90620008a2565b90600052602060002090601f016020900481019282620003de57600085556200042a565b82601f10620003f957805160ff19168380011785556200042a565b828001600101855582156200042a579182015b82811115620004295782518255916020019190600101906200040c565b5b5090506200043991906200043d565b5090565b5b80821115620004585760008160009055506001016200043e565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004c5826200047a565b810181811067ffffffffffffffff82111715620004e757620004e66200048b565b5b80604052505050565b6000620004fc6200045c565b90506200050a8282620004ba565b919050565b600067ffffffffffffffff8211156200052d576200052c6200048b565b5b62000538826200047a565b9050602081019050919050565b60005b838110156200056557808201518184015260208101905062000548565b8381111562000575576000848401525b50505050565b6000620005926200058c846200050f565b620004f0565b905082815260208101848484011115620005b157620005b062000475565b5b620005be84828562000545565b509392505050565b600082601f830112620005de57620005dd62000470565b5b8151620005f08482602086016200057b565b91505092915050565b600067ffffffffffffffff8211156200061757620006166200048b565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200065a826200062d565b9050919050565b6200066c816200064d565b81146200067857600080fd5b50565b6000815190506200068c8162000661565b92915050565b6000620006a9620006a384620005f9565b620004f0565b90508083825260208201905060208402830185811115620006cf57620006ce62000628565b5b835b81811015620006fc5780620006e788826200067b565b845260208401935050602081019050620006d1565b5050509392505050565b600082601f8301126200071e576200071d62000470565b5b81516200073084826020860162000692565b91505092915050565b6000806040838503121562000753576200075262000466565b5b600083015167ffffffffffffffff8111156200077457620007736200046b565b5b6200078285828601620005c6565b925050602083015167ffffffffffffffff811115620007a657620007a56200046b565b5b620007b48582860162000706565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062000833826200081c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620008685762000867620007ed565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008bb57607f821691505b602082108103620008d157620008d062000873565b5b50919050565b61403b80620008e76000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063a217fddf116100a2578063b88d4fde11610071578063b88d4fde1461057b578063c87b56dd14610597578063d547741f146105c7578063e985e9c5146105e3576101da565b8063a217fddf146104f5578063a22cb46514610513578063a70160231461052f578063b77a147b1461054b576101da565b806391d14854116100de57806391d148541461046d57806395d89b411461049d5780639abc8320146104bb578063a0bcfc7f146104d9576101da565b806370a08231146104035780637cb64759146104335780638da5cb5b1461044f576101da565b8063248a9ca31161017c57806336568abe1161014b57806336568abe1461036b57806342842e0e146103875780635de6dc55146103a35780636352211e146103d3576101da565b8063248a9ca3146102e35780632eb4a7ab146103135780632f2ff15d1461033157806332cb6b0c1461034d576101da565b8063095ea7b3116101b8578063095ea7b31461025d57806318160ddd146102795780631e7269c51461029757806323b872dd146102c7576101da565b806301ffc9a7146101df57806306fdde031461020f578063081812fc1461022d575b600080fd5b6101f960048036038101906101f49190612a9a565b610613565b6040516102069190612ae2565b60405180910390f35b610217610625565b6040516102249190612b96565b60405180910390f35b61024760048036038101906102429190612bee565b6106b7565b6040516102549190612c5c565b60405180910390f35b61027760048036038101906102729190612ca3565b6106fd565b005b610281610814565b60405161028e9190612cf2565b60405180910390f35b6102b160048036038101906102ac9190612d0d565b61081a565b6040516102be9190612ae2565b60405180910390f35b6102e160048036038101906102dc9190612d3a565b61083a565b005b6102fd60048036038101906102f89190612dc3565b61089a565b60405161030a9190612dff565b60405180910390f35b61031b6108ba565b6040516103289190612dff565b60405180910390f35b61034b60048036038101906103469190612e1a565b6108c0565b005b6103556108e1565b6040516103629190612cf2565b60405180910390f35b61038560048036038101906103809190612e1a565b6108e6565b005b6103a1600480360381019061039c9190612d3a565b610969565b005b6103bd60048036038101906103b89190612d0d565b610989565b6040516103ca9190612f18565b60405180910390f35b6103ed60048036038101906103e89190612bee565b610a84565b6040516103fa9190612c5c565b60405180910390f35b61041d60048036038101906104189190612d0d565b610b0a565b60405161042a9190612cf2565b60405180910390f35b61044d60048036038101906104489190612dc3565b610bc1565b005b610457610bd9565b6040516104649190612c5c565b60405180910390f35b61048760048036038101906104829190612e1a565b610c03565b6040516104949190612ae2565b60405180910390f35b6104a5610c6e565b6040516104b29190612b96565b60405180910390f35b6104c3610d00565b6040516104d09190612b96565b60405180910390f35b6104f360048036038101906104ee919061306f565b610d8e565b005b6104fd610db6565b60405161050a9190612dff565b60405180910390f35b61052d600480360381019061052891906130e4565b610dbd565b005b61054960048036038101906105449190612d0d565b610dd3565b005b61056560048036038101906105609190613184565b610ded565b6040516105729190612cf2565b60405180910390f35b61059560048036038101906105909190613272565b611050565b005b6105b160048036038101906105ac9190612bee565b6110b2565b6040516105be9190612b96565b60405180910390f35b6105e160048036038101906105dc9190612e1a565b61117e565b005b6105fd60048036038101906105f891906132f5565b61119f565b60405161060a9190612ae2565b60405180910390f35b600061061e82611233565b9050919050565b60606000805461063490613364565b80601f016020809104026020016040519081016040528092919081815260200182805461066090613364565b80156106ad5780601f10610682576101008083540402835291602001916106ad565b820191906000526020600020905b81548152906001019060200180831161069057829003601f168201915b5050505050905090565b60006106c2826112ad565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061070882610a84565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f90613407565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107976112f8565b73ffffffffffffffffffffffffffffffffffffffff1614806107c657506107c5816107c06112f8565b61119f565b5b610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fc90613499565b60405180910390fd5b61080f8383611300565b505050565b606e5481565b606d6020528060005260406000206000915054906101000a900460ff1681565b61084b6108456112f8565b826113b9565b61088a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108819061352b565b60405180910390fd5b61089583838361144e565b505050565b600060076000838152602001908152602001600020600101549050919050565b606f5481565b6108c98261089a565b6108d281611747565b6108dc838361175b565b505050565b606481565b6108ee6112f8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461095b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610952906135bd565b60405180910390fd5b610965828261183c565b5050565b61098483838360405180602001604052806000815250611050565b505050565b6060600061099683610b0a565b905060008167ffffffffffffffff8111156109b4576109b3612f44565b5b6040519080825280602002602001820160405280156109e25781602001602082028036833780820191505090505b5090506000805b606e54811015610a78578573ffffffffffffffffffffffffffffffffffffffff16610a1382610a84565b73ffffffffffffffffffffffffffffffffffffffff1603610a5d5780838381518110610a4257610a416135dd565b5b6020026020010181815250508180610a599061363b565b9250505b83820315610a78578080610a709061363b565b9150506109e9565b50819350505050919050565b600080610a908361191e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af8906136cf565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7190613761565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b610bce81611747565b81606f819055505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054610c7d90613364565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca990613364565b8015610cf65780601f10610ccb57610100808354040283529160200191610cf6565b820191906000526020600020905b815481529060010190602001808311610cd957829003601f168201915b5050505050905090565b60708054610d0d90613364565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3990613364565b8015610d865780601f10610d5b57610100808354040283529160200191610d86565b820191906000526020600020905b815481529060010190602001808311610d6957829003601f168201915b505050505081565b6000801b610d9b81611747565b8160709080519060200190610db192919061298b565b505050565b6000801b81565b610dcf610dc86112f8565b838361195b565b5050565b6000801b610de081611747565b610de982611ac7565b5050565b6000610df7611b8d565b6064606e5410610e33576040517fd05cb60900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610eb7576040517fddefae2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ed63373ffffffffffffffffffffffffffffffffffffffff16611bdc565b15610f0d576040517f2dd5679600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600033604051602001610f2091906137c9565b604051602081830303815290604052805190602001209050610f86848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050606f5483611bff565b610fbc576040517f0ed6f64500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000606e549050606e6000815480929190610fd69061363b565b91905055506001606d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061103d3382611c16565b809250505061104a611c34565b92915050565b61106161105b6112f8565b836113b9565b6110a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110979061352b565b60405180910390fd5b6110ac84848484611c3e565b50505050565b60606110bd82611c9a565b6110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390613856565b60405180910390fd5b6000611106611cdb565b9050600081511161114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611143906138c2565b60405180910390fd5b8061115684611d6d565b60405160200161116792919061391e565b604051602081830303815290604052915050919050565b6111878261089a565b61119081611747565b61119a838361183c565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112a657506112a582611e3b565b5b9050919050565b6112b681611c9a565b6112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec906136cf565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661137383610a84565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806113c583610a84565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114075750611406818561119f565b5b8061144557508373ffffffffffffffffffffffffffffffffffffffff1661142d846106b7565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661146e82610a84565b73ffffffffffffffffffffffffffffffffffffffff16146114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb906139b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613a46565b60405180910390fd5b6115408383836001611f1d565b8273ffffffffffffffffffffffffffffffffffffffff1661156082610a84565b73ffffffffffffffffffffffffffffffffffffffff16146115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad906139b4565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117428383836001612043565b505050565b611758816117536112f8565b612049565b50565b6117658282610c03565b6118385760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117dd6112f8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6118468282610c03565b1561191a5760006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118bf6112f8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c090613ab2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611aba9190612ae2565b60405180910390a3505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff6a7092513e1f3f720c1d0ad65eb323494afe10d43e19dc4a40bac61ade7579160405160405180910390a35050565b600260065403611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990613b1e565b60405180910390fd5b6002600681905550565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082611c0c85846120ce565b1490509392505050565b611c30828260405180602001604052806000815250612124565b5050565b6001600681905550565b611c4984848461144e565b611c558484848461217f565b611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613bb0565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16611cbc8361191e565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b606060708054611cea90613364565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1690613364565b8015611d635780601f10611d3857610100808354040283529160200191611d63565b820191906000526020600020905b815481529060010190602001808311611d4657829003601f168201915b5050505050905090565b606060006001611d7c84612306565b01905060008167ffffffffffffffff811115611d9b57611d9a612f44565b5b6040519080825280601f01601f191660200182016040528015611dcd5781602001600182028036833780820191505090505b509050600082602001820190505b600115611e30578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611e2457611e23613bd0565b5b04945060008503611ddb575b819350505050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f0657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f165750611f1582612459565b5b9050919050565b600181111561203d57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611fb15780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fa99190613bff565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461203c5780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120349190613c33565b925050819055505b5b50505050565b50505050565b6120538282610c03565b6120ca57612060816124c3565b61206e8360001c60206124f0565b60405160200161207f929190613d21565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c19190612b96565b60405180910390fd5b5050565b60008082905060005b845181101561211957612104828683815181106120f7576120f66135dd565b5b602002602001015161272c565b915080806121119061363b565b9150506120d7565b508091505092915050565b61212e8383612757565b61213b600084848461217f565b61217a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217190613bb0565b60405180910390fd5b505050565b60006121a08473ffffffffffffffffffffffffffffffffffffffff16611bdc565b156122f9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121c96112f8565b8786866040518563ffffffff1660e01b81526004016121eb9493929190613db0565b6020604051808303816000875af192505050801561222757506040513d601f19601f820116820180604052508101906122249190613e11565b60015b6122a9573d8060008114612257576040519150601f19603f3d011682016040523d82523d6000602084013e61225c565b606091505b5060008151036122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229890613bb0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122fe565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612364577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161235a57612359613bd0565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106123a1576d04ee2d6d415b85acef8100000000838161239757612396613bd0565b5b0492506020810190505b662386f26fc1000083106123d057662386f26fc1000083816123c6576123c5613bd0565b5b0492506010810190505b6305f5e10083106123f9576305f5e10083816123ef576123ee613bd0565b5b0492506008810190505b612710831061241e57612710838161241457612413613bd0565b5b0492506004810190505b60648310612441576064838161243757612436613bd0565b5b0492506002810190505b600a8310612450576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606124e98273ffffffffffffffffffffffffffffffffffffffff16601460ff166124f0565b9050919050565b6060600060028360026125039190613e3e565b61250d9190613c33565b67ffffffffffffffff81111561252657612525612f44565b5b6040519080825280601f01601f1916602001820160405280156125585781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106125905761258f6135dd565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106125f4576125f36135dd565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026126349190613e3e565b61263e9190613c33565b90505b60018111156126de577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106126805761267f6135dd565b5b1a60f81b828281518110612697576126966135dd565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806126d790613e98565b9050612641565b5060008414612722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271990613f0d565b60405180910390fd5b8091505092915050565b60008183106127445761273f8284612974565b61274f565b61274e8383612974565b5b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bd90613f79565b60405180910390fd5b6127cf81611c9a565b1561280f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280690613fe5565b60405180910390fd5b61281d600083836001611f1d565b61282681611c9a565b15612866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285d90613fe5565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612970600083836001612043565b5050565b600082600052816020526040600020905092915050565b82805461299790613364565b90600052602060002090601f0160209004810192826129b95760008555612a00565b82601f106129d257805160ff1916838001178555612a00565b82800160010185558215612a00579182015b828111156129ff5782518255916020019190600101906129e4565b5b509050612a0d9190612a11565b5090565b5b80821115612a2a576000816000905550600101612a12565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a7781612a42565b8114612a8257600080fd5b50565b600081359050612a9481612a6e565b92915050565b600060208284031215612ab057612aaf612a38565b5b6000612abe84828501612a85565b91505092915050565b60008115159050919050565b612adc81612ac7565b82525050565b6000602082019050612af76000830184612ad3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b37578082015181840152602081019050612b1c565b83811115612b46576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b6882612afd565b612b728185612b08565b9350612b82818560208601612b19565b612b8b81612b4c565b840191505092915050565b60006020820190508181036000830152612bb08184612b5d565b905092915050565b6000819050919050565b612bcb81612bb8565b8114612bd657600080fd5b50565b600081359050612be881612bc2565b92915050565b600060208284031215612c0457612c03612a38565b5b6000612c1284828501612bd9565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4682612c1b565b9050919050565b612c5681612c3b565b82525050565b6000602082019050612c716000830184612c4d565b92915050565b612c8081612c3b565b8114612c8b57600080fd5b50565b600081359050612c9d81612c77565b92915050565b60008060408385031215612cba57612cb9612a38565b5b6000612cc885828601612c8e565b9250506020612cd985828601612bd9565b9150509250929050565b612cec81612bb8565b82525050565b6000602082019050612d076000830184612ce3565b92915050565b600060208284031215612d2357612d22612a38565b5b6000612d3184828501612c8e565b91505092915050565b600080600060608486031215612d5357612d52612a38565b5b6000612d6186828701612c8e565b9350506020612d7286828701612c8e565b9250506040612d8386828701612bd9565b9150509250925092565b6000819050919050565b612da081612d8d565b8114612dab57600080fd5b50565b600081359050612dbd81612d97565b92915050565b600060208284031215612dd957612dd8612a38565b5b6000612de784828501612dae565b91505092915050565b612df981612d8d565b82525050565b6000602082019050612e146000830184612df0565b92915050565b60008060408385031215612e3157612e30612a38565b5b6000612e3f85828601612dae565b9250506020612e5085828601612c8e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e8f81612bb8565b82525050565b6000612ea18383612e86565b60208301905092915050565b6000602082019050919050565b6000612ec582612e5a565b612ecf8185612e65565b9350612eda83612e76565b8060005b83811015612f0b578151612ef28882612e95565b9750612efd83612ead565b925050600181019050612ede565b5085935050505092915050565b60006020820190508181036000830152612f328184612eba565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f7c82612b4c565b810181811067ffffffffffffffff82111715612f9b57612f9a612f44565b5b80604052505050565b6000612fae612a2e565b9050612fba8282612f73565b919050565b600067ffffffffffffffff821115612fda57612fd9612f44565b5b612fe382612b4c565b9050602081019050919050565b82818337600083830152505050565b600061301261300d84612fbf565b612fa4565b90508281526020810184848401111561302e5761302d612f3f565b5b613039848285612ff0565b509392505050565b600082601f83011261305657613055612f3a565b5b8135613066848260208601612fff565b91505092915050565b60006020828403121561308557613084612a38565b5b600082013567ffffffffffffffff8111156130a3576130a2612a3d565b5b6130af84828501613041565b91505092915050565b6130c181612ac7565b81146130cc57600080fd5b50565b6000813590506130de816130b8565b92915050565b600080604083850312156130fb576130fa612a38565b5b600061310985828601612c8e565b925050602061311a858286016130cf565b9150509250929050565b600080fd5b600080fd5b60008083601f84011261314457613143612f3a565b5b8235905067ffffffffffffffff81111561316157613160613124565b5b60208301915083602082028301111561317d5761317c613129565b5b9250929050565b6000806020838503121561319b5761319a612a38565b5b600083013567ffffffffffffffff8111156131b9576131b8612a3d565b5b6131c58582860161312e565b92509250509250929050565b600067ffffffffffffffff8211156131ec576131eb612f44565b5b6131f582612b4c565b9050602081019050919050565b6000613215613210846131d1565b612fa4565b90508281526020810184848401111561323157613230612f3f565b5b61323c848285612ff0565b509392505050565b600082601f83011261325957613258612f3a565b5b8135613269848260208601613202565b91505092915050565b6000806000806080858703121561328c5761328b612a38565b5b600061329a87828801612c8e565b94505060206132ab87828801612c8e565b93505060406132bc87828801612bd9565b925050606085013567ffffffffffffffff8111156132dd576132dc612a3d565b5b6132e987828801613244565b91505092959194509250565b6000806040838503121561330c5761330b612a38565b5b600061331a85828601612c8e565b925050602061332b85828601612c8e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061337c57607f821691505b60208210810361338f5761338e613335565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006133f1602183612b08565b91506133fc82613395565b604082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613483603d83612b08565b915061348e82613427565b604082019050919050565b600060208201905081810360008301526134b281613476565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613515602d83612b08565b9150613520826134b9565b604082019050919050565b6000602082019050818103600083015261354481613508565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006135a7602f83612b08565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061364682612bb8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136785761367761360c565b5b600182019050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006136b9601883612b08565b91506136c482613683565b602082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061374b602983612b08565b9150613756826136ef565b604082019050919050565b6000602082019050818103600083015261377a8161373e565b9050919050565b60008160601b9050919050565b600061379982613781565b9050919050565b60006137ab8261378e565b9050919050565b6137c36137be82612c3b565b6137a0565b82525050565b60006137d582846137b2565b60148201915081905092915050565b7f444543414c3a2055524920717565727920666f72206e6f6e6578697374656e7460008201527f20746f6b656e0000000000000000000000000000000000000000000000000000602082015250565b6000613840602683612b08565b915061384b826137e4565b604082019050919050565b6000602082019050818103600083015261386f81613833565b9050919050565b7f62617365555249206e6f74207365740000000000000000000000000000000000600082015250565b60006138ac600f83612b08565b91506138b782613876565b602082019050919050565b600060208201905081810360008301526138db8161389f565b9050919050565b600081905092915050565b60006138f882612afd565b61390281856138e2565b9350613912818560208601612b19565b80840191505092915050565b600061392a82856138ed565b915061393682846138ed565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061399e602583612b08565b91506139a982613942565b604082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a30602483612b08565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613a9c601983612b08565b9150613aa782613a66565b602082019050919050565b60006020820190508181036000830152613acb81613a8f565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613b08601f83612b08565b9150613b1382613ad2565b602082019050919050565b60006020820190508181036000830152613b3781613afb565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613b9a603283612b08565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c0a82612bb8565b9150613c1583612bb8565b925082821015613c2857613c2761360c565b5b828203905092915050565b6000613c3e82612bb8565b9150613c4983612bb8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c7e57613c7d61360c565b5b828201905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613cbf6017836138e2565b9150613cca82613c89565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613d0b6011836138e2565b9150613d1682613cd5565b601182019050919050565b6000613d2c82613cb2565b9150613d3882856138ed565b9150613d4382613cfe565b9150613d4f82846138ed565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000613d8282613d5b565b613d8c8185613d66565b9350613d9c818560208601612b19565b613da581612b4c565b840191505092915050565b6000608082019050613dc56000830187612c4d565b613dd26020830186612c4d565b613ddf6040830185612ce3565b8181036060830152613df18184613d77565b905095945050505050565b600081519050613e0b81612a6e565b92915050565b600060208284031215613e2757613e26612a38565b5b6000613e3584828501613dfc565b91505092915050565b6000613e4982612bb8565b9150613e5483612bb8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e8d57613e8c61360c565b5b828202905092915050565b6000613ea382612bb8565b915060008203613eb657613eb561360c565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613ef7602083612b08565b9150613f0282613ec1565b602082019050919050565b60006020820190508181036000830152613f2681613eea565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613f63602083612b08565b9150613f6e82613f2d565b602082019050919050565b60006020820190508181036000830152613f9281613f56565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613fcf601c83612b08565b9150613fda82613f99565b602082019050919050565b60006020820190508181036000830152613ffe81613fc2565b905091905056fea264697066735822122091285ac80922404af851db7c5a26b336db8998ece95769c4b73e9499d6e0f7d364736f6c634300080d0033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003268747470733a2f2f636c69656e742d6170692e646563612e73797374656d732f646563616c2f6d657461646174612f31302f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000d523545b49076807094c0718f5eba00c0ae72fd6000000000000000000000000befaff31e713bb898ea26e30df8aa1f4b0b818b9