60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600990805190602001906200005192919062000337565b50662386f26fc10000600b556003600c55612710600d556103e8600e556001600f60006101000a81548160ff0219169083151502179055503480156200009657600080fd5b50604051620047db380380620047db8339818101604052810190620000bc919062000465565b6040518060400160405280600481526020017f30785442000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f585442000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200014092919062000337565b5080600190805190602001906200015992919062000337565b5050506200017c620001706200019460201b60201c565b6200019c60201b60201c565b6200018d816200026260201b60201c565b50620006bd565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002726200019460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002986200030d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e890620004dd565b60405180910390fd5b80600890805190602001906200030992919062000337565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200034590620005a5565b90600052602060002090601f016020900481019282620003695760008555620003b5565b82601f106200038457805160ff1916838001178555620003b5565b82800160010185558215620003b5579182015b82811115620003b457825182559160200191906001019062000397565b5b509050620003c49190620003c8565b5090565b5b80821115620003e3576000816000905550600101620003c9565b5090565b6000620003fe620003f88462000528565b620004ff565b9050828152602081018484840111156200041d576200041c62000674565b5b6200042a8482856200056f565b509392505050565b600082601f8301126200044a57620004496200066f565b5b81516200045c848260208601620003e7565b91505092915050565b6000602082840312156200047e576200047d6200067e565b5b600082015167ffffffffffffffff8111156200049f576200049e62000679565b5b620004ad8482850162000432565b91505092915050565b6000620004c56020836200055e565b9150620004d28262000694565b602082019050919050565b60006020820190508181036000830152620004f881620004b6565b9050919050565b60006200050b6200051e565b9050620005198282620005db565b919050565b6000604051905090565b600067ffffffffffffffff82111562000546576200054562000640565b5b620005518262000683565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200058f57808201518184015260208101905062000572565b838111156200059f576000848401525b50505050565b60006002820490506001821680620005be57607f821691505b60208210811415620005d557620005d462000611565b5b50919050565b620005e68262000683565b810181811067ffffffffffffffff8211171562000608576200060762000640565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61410e80620006cd6000396000f3fe6080604052600436106101f95760003560e01c806370a082311161010d578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd146106da578063d755bf9914610717578063e985e9c514610740578063f19e75d41461077d578063f2fde38b146107a6576101f9565b8063a22cb46514610634578063b0551ac41461065d578063b88d4fde14610686578063c6682862146106af576101f9565b806391b7f5ed116100dc57806391b7f5ed1461059957806395d89b41146105c25780639d1b464a146105ed578063a0712d6814610618576101f9565b806370a08231146104ef578063715018a61461052c57806379b6ed36146105435780638da5cb5b1461056e576101f9565b80632ddbd13a11610190578063485a68a31161015f578063485a68a31461040857806355f804b3146104335780635c975abb1461045c5780636352211e146104875780636c143862146104c4576101f9565b80632ddbd13a146103745780633ccfd60b1461039f57806342842e0e146103b65780634695da2c146103df576101f9565b8063095ea7b3116101cc578063095ea7b3146102cc57806310b0c052146102f557806318160ddd1461032057806323b872dd1461034b576101f9565b806301ffc9a7146101fe57806302329a291461023b57806306fdde0314610264578063081812fc1461028f575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612c10565b6107cf565b6040516102329190613247565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612be3565b6108b1565b005b34801561027057600080fd5b5061027961094a565b6040516102869190613262565b60405180910390f35b34801561029b57600080fd5b506102b660048036038101906102b19190612cb3565b6109dc565b6040516102c391906131e0565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190612ba3565b610a61565b005b34801561030157600080fd5b5061030a610b79565b6040516103179190613584565b60405180910390f35b34801561032c57600080fd5b50610335610b7f565b6040516103429190613584565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d9190612a8d565b610b90565b005b34801561038057600080fd5b50610389610bf0565b6040516103969190613584565b60405180910390f35b3480156103ab57600080fd5b506103b4610bf6565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612a8d565b610d27565b005b3480156103eb57600080fd5b5061040660048036038101906104019190612cb3565b610d47565b005b34801561041457600080fd5b5061041d610ee4565b60405161042a9190613584565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612c6a565b610eea565b005b34801561046857600080fd5b50610471610f80565b60405161047e9190613247565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190612cb3565b610f93565b6040516104bb91906131e0565b60405180910390f35b3480156104d057600080fd5b506104d9611045565b6040516104e69190613584565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190612a20565b611056565b6040516105239190613584565b60405180910390f35b34801561053857600080fd5b5061054161110e565b005b34801561054f57600080fd5b50610558611196565b6040516105659190613262565b60405180910390f35b34801561057a57600080fd5b50610583611224565b60405161059091906131e0565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612cb3565b61124e565b005b3480156105ce57600080fd5b506105d76112d4565b6040516105e49190613262565b60405180910390f35b3480156105f957600080fd5b50610602611366565b60405161060f9190613584565b60405180910390f35b610632600480360381019061062d9190612cb3565b61136c565b005b34801561064057600080fd5b5061065b60048036038101906106569190612b63565b6114c6565b005b34801561066957600080fd5b50610684600480360381019061067f9190612cb3565b6114dc565b005b34801561069257600080fd5b506106ad60048036038101906106a89190612ae0565b611562565b005b3480156106bb57600080fd5b506106c46115c4565b6040516106d19190613262565b60405180910390f35b3480156106e657600080fd5b5061070160048036038101906106fc9190612cb3565b611652565b60405161070e9190613262565b60405180910390f35b34801561072357600080fd5b5061073e60048036038101906107399190612cb3565b6116fc565b005b34801561074c57600080fd5b5061076760048036038101906107629190612a4d565b611782565b6040516107749190613247565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190612cb3565b611816565b005b3480156107b257600080fd5b506107cd60048036038101906107c89190612a20565b611909565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108aa57506108a982611a01565b5b9050919050565b6108b9611a6b565b73ffffffffffffffffffffffffffffffffffffffff166108d7611224565b73ffffffffffffffffffffffffffffffffffffffff161461092d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610924906134c4565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b60606000805461095990613854565b80601f016020809104026020016040519081016040528092919081815260200182805461098590613854565b80156109d25780601f106109a7576101008083540402835291602001916109d2565b820191906000526020600020905b8154815290600101906020018083116109b557829003601f168201915b5050505050905090565b60006109e782611a73565b610a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1d906134a4565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a6c82610f93565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad490613504565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610afc611a6b565b73ffffffffffffffffffffffffffffffffffffffff161480610b2b5750610b2a81610b25611a6b565b611782565b5b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190613424565b60405180910390fd5b610b748383611adf565b505050565b600c5481565b6000610b8b6007611b98565b905090565b610ba1610b9b611a6b565b82611ba6565b610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790613544565b60405180910390fd5b610beb838383611c84565b505050565b600d5481565b610bfe611a6b565b73ffffffffffffffffffffffffffffffffffffffff16610c1c611224565b73ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c69906134c4565b60405180910390fd5b600047905060003373ffffffffffffffffffffffffffffffffffffffff1682604051610c9d906131cb565b60006040518083038185875af1925050503d8060008114610cda576040519150601f19603f3d011682016040523d82523d6000602084013e610cdf565b606091505b5050905080610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a906133a4565b60405180910390fd5b5050565b610d4283838360405180602001604052806000815250611562565b505050565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c54610d96919061376a565b90506000610da46007611b98565b9050600f60009054906101000a900460ff1615610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90613284565b60405180910390fd5b60048310610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090613564565b60405180910390fd5b600e548382610e489190613689565b10610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f906132e4565b60405180910390fd5b60008211610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec290613324565b60405180910390fd5b610ed53384611eeb565b610edf3384611f45565b505050565b600e5481565b610ef2611a6b565b73ffffffffffffffffffffffffffffffffffffffff16610f10611224565b73ffffffffffffffffffffffffffffffffffffffff1614610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d906134c4565b60405180910390fd5b8060089080519060200190610f7c929190612834565b5050565b600f60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390613464565b60405180910390fd5b80915050919050565b60006110516007611b98565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90613444565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611116611a6b565b73ffffffffffffffffffffffffffffffffffffffff16611134611224565b73ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906134c4565b60405180910390fd5b6111946000611f85565b565b600a80546111a390613854565b80601f01602080910402602001604051908101604052809291908181526020018280546111cf90613854565b801561121c5780601f106111f15761010080835404028352916020019161121c565b820191906000526020600020905b8154815290600101906020018083116111ff57829003601f168201915b505050505081565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611256611a6b565b73ffffffffffffffffffffffffffffffffffffffff16611274611224565b73ffffffffffffffffffffffffffffffffffffffff16146112ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c1906134c4565b60405180910390fd5b80600b8190555050565b6060600180546112e390613854565b80601f016020809104026020016040519081016040528092919081815260200182805461130f90613854565b801561135c5780601f106113315761010080835404028352916020019161135c565b820191906000526020600020905b81548152906001019060200180831161133f57829003601f168201915b5050505050905090565b600b5481565b60006113786007611b98565b9050600f60009054906101000a900460ff16156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613284565b60405180910390fd5b6015821061140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140490613524565b60405180910390fd5b6001600d5461141c9190613689565b82826114289190613689565b10611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f906132a4565b60405180910390fd5b81600b546114769190613710565b3410156114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af906132c4565b60405180910390fd5b6114c23383611f45565b5050565b6114d86114d1611a6b565b838361204b565b5050565b6114e4611a6b565b73ffffffffffffffffffffffffffffffffffffffff16611502611224565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f906134c4565b60405180910390fd5b80600c8190555050565b61157361156d611a6b565b83611ba6565b6115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990613544565b60405180910390fd5b6115be848484846121b8565b50505050565b600980546115d190613854565b80601f01602080910402602001604051908101604052809291908181526020018280546115fd90613854565b801561164a5780601f1061161f5761010080835404028352916020019161164a565b820191906000526020600020905b81548152906001019060200180831161162d57829003601f168201915b505050505081565b606061165d82611a73565b61169c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611693906134e4565b60405180910390fd5b60006116a6612214565b905060008151116116c657604051806020016040528060008152506116f4565b806116d0846122a6565b60096040516020016116e49392919061319a565b6040516020818303038152906040525b915050919050565b611704611a6b565b73ffffffffffffffffffffffffffffffffffffffff16611722611224565b73ffffffffffffffffffffffffffffffffffffffff1614611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f906134c4565b60405180910390fd5b80600e8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61181e611a6b565b73ffffffffffffffffffffffffffffffffffffffff1661183c611224565b73ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906134c4565b60405180910390fd5b600061189e6007611b98565b90506001600d546118af9190613689565b82826118bb9190613689565b106118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f2906132a4565b60405180910390fd5b6119053383611f45565b5050565b611911611a6b565b73ffffffffffffffffffffffffffffffffffffffff1661192f611224565b73ffffffffffffffffffffffffffffffffffffffff1614611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c906134c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec90613344565b60405180910390fd5b6119fe81611f85565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b5283610f93565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6000611bb182611a73565b611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790613404565b60405180910390fd5b6000611bfb83610f93565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c6a57508373ffffffffffffffffffffffffffffffffffffffff16611c52846109dc565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c7b5750611c7a8185611782565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ca482610f93565b73ffffffffffffffffffffffffffffffffffffffff1614611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190613364565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d61906133c4565b60405180910390fd5b611d75838383612407565b611d80600082611adf565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dd0919061376a565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e279190613689565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ee683838361240c565b505050565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f3a9190613689565b925050819055505050565b60005b81811015611f8057611f5a6007612411565b611f6d83611f686007611b98565b612427565b8080611f78906138b7565b915050611f48565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b1906133e4565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516121ab9190613247565b60405180910390a3505050565b6121c3848484611c84565b6121cf84848484612445565b61220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220590613304565b60405180910390fd5b50505050565b60606008805461222390613854565b80601f016020809104026020016040519081016040528092919081815260200182805461224f90613854565b801561229c5780601f106122715761010080835404028352916020019161229c565b820191906000526020600020905b81548152906001019060200180831161227f57829003601f168201915b5050505050905090565b606060008214156122ee576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612402565b600082905060005b60008214612320578080612309906138b7565b915050600a8261231991906136df565b91506122f6565b60008167ffffffffffffffff81111561233c5761233b6139ed565b5b6040519080825280601f01601f19166020018201604052801561236e5781602001600182028036833780820191505090505b5090505b600085146123fb57600182612387919061376a565b9150600a856123969190613900565b60306123a29190613689565b60f81b8183815181106123b8576123b76139be565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123f491906136df565b9450612372565b8093505050505b919050565b505050565b505050565b6001816000016000828254019250508190555050565b6124418282604051806020016040528060008152506125dc565b5050565b60006124668473ffffffffffffffffffffffffffffffffffffffff16612637565b156125cf578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261248f611a6b565b8786866040518563ffffffff1660e01b81526004016124b194939291906131fb565b602060405180830381600087803b1580156124cb57600080fd5b505af19250505080156124fc57506040513d601f19601f820116820180604052508101906124f99190612c3d565b60015b61257f573d806000811461252c576040519150601f19603f3d011682016040523d82523d6000602084013e612531565b606091505b50600081511415612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613304565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506125d4565b600190505b949350505050565b6125e6838361265a565b6125f36000848484612445565b612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262990613304565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c190613484565b60405180910390fd5b6126d381611a73565b15612713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270a90613384565b60405180910390fd5b61271f60008383612407565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276f9190613689565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128306000838361240c565b5050565b82805461284090613854565b90600052602060002090601f01602090048101928261286257600085556128a9565b82601f1061287b57805160ff19168380011785556128a9565b828001600101855582156128a9579182015b828111156128a857825182559160200191906001019061288d565b5b5090506128b691906128ba565b5090565b5b808211156128d35760008160009055506001016128bb565b5090565b60006128ea6128e5846135c4565b61359f565b90508281526020810184848401111561290657612905613a21565b5b612911848285613812565b509392505050565b600061292c612927846135f5565b61359f565b90508281526020810184848401111561294857612947613a21565b5b612953848285613812565b509392505050565b60008135905061296a8161407c565b92915050565b60008135905061297f81614093565b92915050565b600081359050612994816140aa565b92915050565b6000815190506129a9816140aa565b92915050565b600082601f8301126129c4576129c3613a1c565b5b81356129d48482602086016128d7565b91505092915050565b600082601f8301126129f2576129f1613a1c565b5b8135612a02848260208601612919565b91505092915050565b600081359050612a1a816140c1565b92915050565b600060208284031215612a3657612a35613a2b565b5b6000612a448482850161295b565b91505092915050565b60008060408385031215612a6457612a63613a2b565b5b6000612a728582860161295b565b9250506020612a838582860161295b565b9150509250929050565b600080600060608486031215612aa657612aa5613a2b565b5b6000612ab48682870161295b565b9350506020612ac58682870161295b565b9250506040612ad686828701612a0b565b9150509250925092565b60008060008060808587031215612afa57612af9613a2b565b5b6000612b088782880161295b565b9450506020612b198782880161295b565b9350506040612b2a87828801612a0b565b925050606085013567ffffffffffffffff811115612b4b57612b4a613a26565b5b612b57878288016129af565b91505092959194509250565b60008060408385031215612b7a57612b79613a2b565b5b6000612b888582860161295b565b9250506020612b9985828601612970565b9150509250929050565b60008060408385031215612bba57612bb9613a2b565b5b6000612bc88582860161295b565b9250506020612bd985828601612a0b565b9150509250929050565b600060208284031215612bf957612bf8613a2b565b5b6000612c0784828501612970565b91505092915050565b600060208284031215612c2657612c25613a2b565b5b6000612c3484828501612985565b91505092915050565b600060208284031215612c5357612c52613a2b565b5b6000612c618482850161299a565b91505092915050565b600060208284031215612c8057612c7f613a2b565b5b600082013567ffffffffffffffff811115612c9e57612c9d613a26565b5b612caa848285016129dd565b91505092915050565b600060208284031215612cc957612cc8613a2b565b5b6000612cd784828501612a0b565b91505092915050565b612ce98161379e565b82525050565b612cf8816137b0565b82525050565b6000612d098261363b565b612d138185613651565b9350612d23818560208601613821565b612d2c81613a30565b840191505092915050565b6000612d4282613646565b612d4c818561366d565b9350612d5c818560208601613821565b612d6581613a30565b840191505092915050565b6000612d7b82613646565b612d85818561367e565b9350612d95818560208601613821565b80840191505092915050565b60008154612dae81613854565b612db8818661367e565b94506001821660008114612dd35760018114612de457612e17565b60ff19831686528186019350612e17565b612ded85613626565b60005b83811015612e0f57815481890152600182019150602081019050612df0565b838801955050505b50505092915050565b6000612e2d600b8361366d565b9150612e3882613a41565b602082019050919050565b6000612e5060228361366d565b9150612e5b82613a6a565b604082019050919050565b6000612e7360158361366d565b9150612e7e82613ab9565b602082019050919050565b6000612e9660208361366d565b9150612ea182613ae2565b602082019050919050565b6000612eb960328361366d565b9150612ec482613b0b565b604082019050919050565b6000612edc602f8361366d565b9150612ee782613b5a565b604082019050919050565b6000612eff60268361366d565b9150612f0a82613ba9565b604082019050919050565b6000612f2260258361366d565b9150612f2d82613bf8565b604082019050919050565b6000612f45601c8361366d565b9150612f5082613c47565b602082019050919050565b6000612f6860148361366d565b9150612f7382613c70565b602082019050919050565b6000612f8b60248361366d565b9150612f9682613c99565b604082019050919050565b6000612fae60198361366d565b9150612fb982613ce8565b602082019050919050565b6000612fd1602c8361366d565b9150612fdc82613d11565b604082019050919050565b6000612ff460388361366d565b9150612fff82613d60565b604082019050919050565b6000613017602a8361366d565b915061302282613daf565b604082019050919050565b600061303a60298361366d565b915061304582613dfe565b604082019050919050565b600061305d60208361366d565b915061306882613e4d565b602082019050919050565b6000613080602c8361366d565b915061308b82613e76565b604082019050919050565b60006130a360208361366d565b91506130ae82613ec5565b602082019050919050565b60006130c6602f8361366d565b91506130d182613eee565b604082019050919050565b60006130e960218361366d565b91506130f482613f3d565b604082019050919050565b600061310c602a8361366d565b915061311782613f8c565b604082019050919050565b600061312f600083613662565b915061313a82613fdb565b600082019050919050565b600061315260318361366d565b915061315d82613fde565b604082019050919050565b600061317560248361366d565b91506131808261402d565b604082019050919050565b61319481613808565b82525050565b60006131a68286612d70565b91506131b28285612d70565b91506131be8284612da1565b9150819050949350505050565b60006131d682613122565b9150819050919050565b60006020820190506131f56000830184612ce0565b92915050565b60006080820190506132106000830187612ce0565b61321d6020830186612ce0565b61322a604083018561318b565b818103606083015261323c8184612cfe565b905095945050505050565b600060208201905061325c6000830184612cef565b92915050565b6000602082019050818103600083015261327c8184612d37565b905092915050565b6000602082019050818103600083015261329d81612e20565b9050919050565b600060208201905081810360008301526132bd81612e43565b9050919050565b600060208201905081810360008301526132dd81612e66565b9050919050565b600060208201905081810360008301526132fd81612e89565b9050919050565b6000602082019050818103600083015261331d81612eac565b9050919050565b6000602082019050818103600083015261333d81612ecf565b9050919050565b6000602082019050818103600083015261335d81612ef2565b9050919050565b6000602082019050818103600083015261337d81612f15565b9050919050565b6000602082019050818103600083015261339d81612f38565b9050919050565b600060208201905081810360008301526133bd81612f5b565b9050919050565b600060208201905081810360008301526133dd81612f7e565b9050919050565b600060208201905081810360008301526133fd81612fa1565b9050919050565b6000602082019050818103600083015261341d81612fc4565b9050919050565b6000602082019050818103600083015261343d81612fe7565b9050919050565b6000602082019050818103600083015261345d8161300a565b9050919050565b6000602082019050818103600083015261347d8161302d565b9050919050565b6000602082019050818103600083015261349d81613050565b9050919050565b600060208201905081810360008301526134bd81613073565b9050919050565b600060208201905081810360008301526134dd81613096565b9050919050565b600060208201905081810360008301526134fd816130b9565b9050919050565b6000602082019050818103600083015261351d816130dc565b9050919050565b6000602082019050818103600083015261353d816130ff565b9050919050565b6000602082019050818103600083015261355d81613145565b9050919050565b6000602082019050818103600083015261357d81613168565b9050919050565b6000602082019050613599600083018461318b565b92915050565b60006135a96135ba565b90506135b58282613886565b919050565b6000604051905090565b600067ffffffffffffffff8211156135df576135de6139ed565b5b6135e882613a30565b9050602081019050919050565b600067ffffffffffffffff8211156136105761360f6139ed565b5b61361982613a30565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061369482613808565b915061369f83613808565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136d4576136d3613931565b5b828201905092915050565b60006136ea82613808565b91506136f583613808565b92508261370557613704613960565b5b828204905092915050565b600061371b82613808565b915061372683613808565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561375f5761375e613931565b5b828202905092915050565b600061377582613808565b915061378083613808565b92508282101561379357613792613931565b5b828203905092915050565b60006137a9826137e8565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561383f578082015181840152602081019050613824565b8381111561384e576000848401525b50505050565b6000600282049050600182168061386c57607f821691505b602082108114156138805761387f61398f565b5b50919050565b61388f82613a30565b810181811067ffffffffffffffff821117156138ae576138ad6139ed565b5b80604052505050565b60006138c282613808565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138f5576138f4613931565b5b600182019050919050565b600061390b82613808565b915061391683613808565b92508261392657613925613960565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f53616c6520706175736564000000000000000000000000000000000000000000600082015250565b7f45786365656473206d6178696d756d20746173747920626f6e6573207375707060008201527f6c79000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682045746865722073656e740000000000000000000000600082015250565b7f4e6f206d6f7265206672656520307820546173747920426f6e6573206c656674600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f596f752063616e206f6e6c79206d696e7420332066726565205461737479204260008201527f6f6e6573207065722077616c6c65740000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752063616e206f6e6c79206d696e7420323020746173747920426f6e657360008201527f20617420612074696d6500000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f596f752063616e206f6e6c79206d696e7420332066726565207461737479204260008201527f6f6e657300000000000000000000000000000000000000000000000000000000602082015250565b6140858161379e565b811461409057600080fd5b50565b61409c816137b0565b81146140a757600080fd5b50565b6140b3816137bc565b81146140be57600080fd5b50565b6140ca81613808565b81146140d557600080fd5b5056fea2646970667358221220232df3dc02188c2231115a2fb65d679ac6ef7f3c2e0cb8120fc22fcf51c6eecd64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d58636133557648444d68366e4b564e757953746278786f4c6f43615273545848486333796e63624673754b392f00000000000000000000