60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600790816100489190611282565b506005601155348015610059575f80fd5b506040518060400160405280600781526020017f50484f454e4958000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5048580000000000000000000000000000000000000000000000000000000000815250815f90816100d49190611282565b5080600190816100e49190611282565b5050505f600d5f6101000a81548160ff02191690831515021790555061011c61011161019560201b60201c565b61019c60201b60201c565b670de0b6b3a7640000600f819055506019601081905550610143600a61026160201b60201c565b61015161038f60201b60201c565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a8f565b5f33905090565b5f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61026f61019560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661029361038f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146102e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e0906113ab565b60405180910390fd5b5f811180156103125750806103026103b860201b60201c565b61030c91906113f6565b60105410155b610351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034890611473565b60405180910390fd5b5f5b8181101561038b575f60405180602001604052805f815250905061037d33826103c460201b60201c565b508080600101915050610353565b5050565b5f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f600a80549050905090565b6001151560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044b90611501565b60405180910390fd5b610464600e61050560201b60201c565b5f600e73ffb72d542d6cee6d917560335dd7f34d0eed466063d602012f90916040518263ffffffff1660e01b815260040161049f9190611526565b602060405180830381865af41580156104ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104de919061156d565b90506104f0838261051960201b60201c565b610500818361053c60201b60201c565b505050565b6001815f015f828254019250508190555050565b610538828260405180602001604052805f8152506105ad60201b60201c565b5050565b61054b826106a360201b60201c565b61058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058190611608565b60405180910390fd5b80600c5f8481526020019081526020015f2090816105a89190611282565b505050565b6001151560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063490611501565b60405180910390fd5b61064d838361070b60201b60201c565b61065f5f84848461096b60201b60201c565b61069e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069590611696565b60405180910390fd5b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660025f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610779576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610770906116fe565b60405180910390fd5b610788816106a360201b60201c565b156107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90611766565b60405180910390fd5b6001151560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90611501565b60405180910390fd5b6108695f8383610af960201b60201c565b600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108b691906113f6565b925050819055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f6109918473ffffffffffffffffffffffffffffffffffffffff16610b5d60201b60201c565b15610aec578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026109c061019560201b60201c565b8786866040518563ffffffff1660e01b81526004016109e29493929190611842565b6020604051808303815f875af1925050508015610a1d57506040513d601f19601f82011682018060405250810190610a1a91906118e1565b60015b610a9c573d805f8114610a4b576040519150601f19603f3d011682016040523d82523d5f602084013e610a50565b606091505b505f815103610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90611696565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050610af1565b600190505b949350505050565b610b07610b6e60201b60201c565b15610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90611956565b60405180910390fd5b610b58838383610b8360201b60201c565b505050565b5f80823b90505f8111915050919050565b5f600d5f9054906101000a900460ff16905090565b610b94838383610cb160201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bdb57610bd681610cb660201b60201c565b610c20565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610c1f57610c1e8382610cfa60201b60201c565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6757610c6281610e5660201b60201c565b610cac565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610cab57610caa8282610f1660201b60201c565b5b5b505050565b505050565b600a80549050600b5f8381526020019081526020015f2081905550600a81908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f6001610d0c84610f9460201b60201c565b610d169190611974565b90505f60095f8481526020019081526020015f20549050818114610ded575f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160095f8381526020019081526020015f2081905550505b60095f8481526020019081526020015f205f905560085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f6001600a80549050610e699190611974565b90505f600b5f8481526020019081526020015f205490505f600a8381548110610e9557610e946119a7565b5b905f5260205f200154905080600a8381548110610eb557610eb46119a7565b5b905f5260205f20018190555081600b5f8381526020019081526020015f2081905550600b5f8581526020019081526020015f205f9055600a805480610efd57610efc6119d4565b5b600190038181905f5260205f20015f9055905550505050565b5f610f2683610f9460201b60201c565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060095f8481526020019081526020015f2081905550505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa90611a71565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806110c357607f821691505b6020821081036110d6576110d561107f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026111387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826110fd565b61114286836110fd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61118661118161117c8461115a565b611163565b61115a565b9050919050565b5f819050919050565b61119f8361116c565b6111b36111ab8261118d565b848454611109565b825550505050565b5f90565b6111c76111bb565b6111d2818484611196565b505050565b5b818110156111f5576111ea5f826111bf565b6001810190506111d8565b5050565b601f82111561123a5761120b816110dc565b611214846110ee565b81016020851015611223578190505b61123761122f856110ee565b8301826111d7565b50505b505050565b5f82821c905092915050565b5f61125a5f198460080261123f565b1980831691505092915050565b5f611272838361124b565b9150826002028217905092915050565b61128b82611048565b67ffffffffffffffff8111156112a4576112a3611052565b5b6112ae82546110ac565b6112b98282856111f9565b5f60209050601f8311600181146112ea575f84156112d8578287015190505b6112e28582611267565b865550611349565b601f1984166112f8866110dc565b5f5b8281101561131f578489015182556001820191506020850194506020810190506112fa565b8683101561133c5784890151611338601f89168261124b565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611395602083611351565b91506113a082611361565b602082019050919050565b5f6020820190508181035f8301526113c281611389565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114008261115a565b915061140b8361115a565b9250828201905080821115611423576114226113c9565b5b92915050565b7f4e46543a20436865636b204d617820537570706c7900000000000000000000005f82015250565b5f61145d601583611351565b915061146882611429565b602082019050919050565b5f6020820190508181035f83015261148a81611451565b9050919050565b7f746869732070617274696375796c6172206164647265737320697320626c61635f8201527f6b6c697374656400000000000000000000000000000000000000000000000000602082015250565b5f6114eb602783611351565b91506114f682611491565b604082019050919050565b5f6020820190508181035f830152611518816114df565b9050919050565b8082525050565b5f6020820190506115395f83018461151f565b92915050565b5f80fd5b61154c8161115a565b8114611556575f80fd5b50565b5f8151905061156781611543565b92915050565b5f602082840312156115825761158161153f565b5b5f61158f84828501611559565b91505092915050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e5f8201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b5f6115f2602e83611351565b91506115fd82611598565b604082019050919050565b5f6020820190508181035f83015261161f816115e6565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e2045524337323152655f8201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b5f611680603283611351565b915061168b82611626565b604082019050919050565b5f6020820190508181035f8301526116ad81611674565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f20616464726573735f82015250565b5f6116e8602083611351565b91506116f3826116b4565b602082019050919050565b5f6020820190508181035f830152611715816116dc565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e746564000000005f82015250565b5f611750601c83611351565b915061175b8261171c565b602082019050919050565b5f6020820190508181035f83015261177d81611744565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117ad82611784565b9050919050565b6117bd816117a3565b82525050565b6117cc8161115a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611814826117d2565b61181e81856117dc565b935061182e8185602086016117ec565b611837816117fa565b840191505092915050565b5f6080820190506118555f8301876117b4565b61186260208301866117b4565b61186f60408301856117c3565b8181036060830152611881818461180a565b905095945050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118c08161188c565b81146118ca575f80fd5b50565b5f815190506118db816118b7565b92915050565b5f602082840312156118f6576118f561153f565b5b5f611903848285016118cd565b91505092915050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f611940601083611351565b915061194b8261190c565b602082019050919050565b5f6020820190508181035f83015261196d81611934565b9050919050565b5f61197e8261115a565b91506119898361115a565b92508282039050818111156119a1576119a06113c9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4552433732313a2062616c616e636520717565727920666f7220746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f611a5b602a83611351565b9150611a6682611a01565b604082019050919050565b5f6020820190508181035f830152611a8881611a4f565b9050919050565b61586d80611a9c5f395ff3fe608060405260043610610249575f3560e01c80635c975abb1161013857806395d89b41116100b5578063d204c45e11610079578063d204c45e14610848578063de3d044714610870578063e985e9c5146108a0578063f2fde38b146108dc578063fb107a4f14610904578063fcbca4561461092e57610250565b806395d89b411461076a578063a22cb46514610794578063b7669fad146107bc578063b88d4fde146107e4578063c87b56dd1461080c57610250565b8063763265de116100fc578063763265de146106b057806381530b68146106d85780638456cb59146107005780638b7afe2e146107165780638da5cb5b1461074057610250565b80635c975abb146105ce5780636352211e146105f857806370a0823114610634578063715018a6146106705780637561a71d1461068657610250565b80633521bd7e116101c657806342966c681161018a57806342966c68146104c8578063438b6300146104f05780634838d1651461052c5780634f6ccce714610568578063570ff4de146105a457610250565b80633521bd7e146104265780633945a60b146104505780633ccfd60b1461046c5780633f4ba83a1461048a57806342842e0e146104a057610250565b806318160ddd1161020d57806318160ddd146103445780631863404d1461036e57806322f4596f1461039857806323b872dd146103c25780632f745c59146103ea57610250565b806301ffc9a71461025257806306fdde031461028e578063081812fc146102b8578063095ea7b3146102f45780631205b96b1461031c57610250565b3661025057005b005b34801561025d575f80fd5b5061027860048036038101906102739190613a88565b610956565b6040516102859190613acd565b60405180910390f35b348015610299575f80fd5b506102a2610967565b6040516102af9190613b56565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190613ba9565b6109f6565b6040516102eb9190613c13565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190613c56565b610a77565b005b348015610327575f80fd5b50610342600480360381019061033d9190613dc0565b610b8d565b005b34801561034f575f80fd5b50610358610d6d565b6040516103659190613e3b565b60405180910390f35b348015610379575f80fd5b50610382610d79565b60405161038f9190613c13565b60405180910390f35b3480156103a3575f80fd5b506103ac610d9e565b6040516103b99190613e3b565b60405180910390f35b3480156103cd575f80fd5b506103e860048036038101906103e39190613e54565b610da7565b005b3480156103f5575f80fd5b50610410600480360381019061040b9190613c56565b610e07565b60405161041d9190613e3b565b60405180910390f35b348015610431575f80fd5b5061043a610ea7565b6040516104479190613e3b565b60405180910390f35b61046a60048036038101906104659190613c56565b610f26565b005b6104746110f5565b6040516104819190613e3b565b60405180910390f35b348015610495575f80fd5b5061049e6112b0565b005b3480156104ab575f80fd5b506104c660048036038101906104c19190613e54565b611336565b005b3480156104d3575f80fd5b506104ee60048036038101906104e99190613ba9565b611355565b005b3480156104fb575f80fd5b5061051660048036038101906105119190613ea4565b6113b1565b6040516105239190613f86565b60405180910390f35b348015610537575f80fd5b50610552600480360381019061054d9190613ea4565b611456565b60405161055f9190613acd565b60405180910390f35b348015610573575f80fd5b5061058e60048036038101906105899190613ba9565b611473565b60405161059b9190613e3b565b60405180910390f35b3480156105af575f80fd5b506105b86114e1565b6040516105c59190613e3b565b60405180910390f35b3480156105d9575f80fd5b506105e26114e7565b6040516105ef9190613acd565b60405180910390f35b348015610603575f80fd5b5061061e60048036038101906106199190613ba9565b6114fc565b60405161062b9190613c13565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613ea4565b6115a8565b6040516106679190613e3b565b60405180910390f35b34801561067b575f80fd5b5061068461165c565b005b348015610691575f80fd5b5061069a6116e3565b6040516106a79190613e3b565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190613ba9565b6116e9565b005b3480156106e3575f80fd5b506106fe60048036038101906106f99190613ba9565b61176f565b005b34801561070b575f80fd5b50610714611807565b005b348015610721575f80fd5b5061072a61188d565b6040516107379190613e3b565b60405180910390f35b34801561074b575f80fd5b50610754611894565b6040516107619190613c13565b60405180910390f35b348015610775575f80fd5b5061077e6118bd565b60405161078b9190613b56565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b59190613fd0565b61194d565b005b3480156107c7575f80fd5b506107e260048036038101906107dd9190613ea4565b611963565b005b3480156107ef575f80fd5b5061080a600480360381019061080591906140ac565b611a36565b005b348015610817575f80fd5b50610832600480360381019061082d9190613ba9565b611a98565b60405161083f9190613b56565b60405180910390f35b348015610853575f80fd5b5061086e6004803603810190610869919061412c565b611aaa565b005b61088a60048036038101906108859190613c56565b611c0f565b6040516108979190613acd565b60405180910390f35b3480156108ab575f80fd5b506108c660048036038101906108c19190614186565b611d5b565b6040516108d39190613acd565b60405180910390f35b3480156108e7575f80fd5b5061090260048036038101906108fd9190613ea4565b611de9565b005b34801561090f575f80fd5b50610918611edf565b6040516109259190613e3b565b60405180910390f35b348015610939575f80fd5b50610954600480360381019061094f9190613ea4565b611ee8565b005b5f61096082611fbc565b9050919050565b60605f8054610975906141f1565b80601f01602080910402602001604051908101604052809291908181526020018280546109a1906141f1565b80156109ec5780601f106109c3576101008083540402835291602001916109ec565b820191905f5260205f20905b8154815290600101906020018083116109cf57829003601f168201915b5050505050905090565b5f610a0082612035565b610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690614291565b60405180910390fd5b60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610a81826114fc565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae89061431f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b1061209d565b73ffffffffffffffffffffffffffffffffffffffff161480610b3f5750610b3e81610b3961209d565b611d5b565b5b610b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b75906143ad565b60405180910390fd5b610b8883836120a4565b505050565b610b9561209d565b73ffffffffffffffffffffffffffffffffffffffff16610bb3611894565b73ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090614415565b60405180910390fd5b601054610c14610d6d565b10610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4b9061447d565b60405180910390fd5b5f81118015610c77575080610c67610d6d565b610c7191906144c8565b60105410155b610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90614545565b60405180910390fd5b6001151560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d906145d3565b60405180910390fd5b5f5b81811015610d6757610d5a848461215a565b8080600101915050610d48565b50505050565b5f600a80549050905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601054905090565b610db8610db261209d565b82612289565b610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90614661565b60405180910390fd5b610e02838383612365565b505050565b5f610e11836115a8565b8210610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e49906146ef565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f600e73ffb72d542d6cee6d917560335dd7f34d0eed466063d602012f90916040518263ffffffff1660e01b8152600401610ee29190614714565b602060405180830381865af4158015610efd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f219190614741565b905090565b601054610f31610d6d565b10610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f689061447d565b60405180910390fd5b5f81600f54610f80919061476c565b9050803410158015610fbe57505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015610fcc57506011548211155b8015610fec575081610fdc610d6d565b610fe691906144c8565b60105410155b61102b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110229061481d565b60405180910390fd5b6001151560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b2906145d3565b60405180910390fd5b5f5b828110156110ef575f60405180602001604052805f81525090506110e1858261215a565b5080806001019150506110bd565b50505050565b5f6110fe61209d565b73ffffffffffffffffffffffffffffffffffffffff1661111c611894565b73ffffffffffffffffffffffffffffffffffffffff1614611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990614415565b60405180910390fd5b61117a6114e7565b156111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b190614885565b60405180910390fd5b5f4790505f8111611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f7906148ed565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff168260405161122590614938565b5f6040518083038185875af1925050503d805f811461125f576040519150601f19603f3d011682016040523d82523d5f602084013e611264565b606091505b50509050806112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90614996565b60405180910390fd5b819250505090565b6112b861209d565b73ffffffffffffffffffffffffffffffffffffffff166112d6611894565b73ffffffffffffffffffffffffffffffffffffffff161461132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390614415565b60405180910390fd5b6113346125b5565b565b61135083838360405180602001604052805f815250611a36565b505050565b61136661136061209d565b82612289565b6113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90614a24565b60405180910390fd5b6113ae81612655565b50565b60605f6113bd836115a8565b90505f8167ffffffffffffffff8111156113da576113d9613c9c565b5b6040519080825280602002602001820160405280156114085781602001602082028036833780820191505090505b5090505f5b8281101561144b5761141f8582610e07565b82828151811061143257611431614a42565b5b602002602001018181525050808060010191505061140d565b508092505050919050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f61147c610d6d565b82106114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b490614adf565b60405180910390fd5b600a82815481106114d1576114d0614a42565b5b905f5260205f2001549050919050565b60135481565b5f600d5f9054906101000a900460ff16905090565b5f8060025f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690614b6d565b60405180910390fd5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90614bfb565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61166461209d565b73ffffffffffffffffffffffffffffffffffffffff16611682611894565b73ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90614415565b60405180910390fd5b6116e15f612661565b565b60125481565b6116f161209d565b73ffffffffffffffffffffffffffffffffffffffff1661170f611894565b73ffffffffffffffffffffffffffffffffffffffff1614611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90614415565b60405180910390fd5b8060118190555050565b61177761209d565b73ffffffffffffffffffffffffffffffffffffffff16611795611894565b73ffffffffffffffffffffffffffffffffffffffff16146117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290614415565b60405180910390fd5b662386f26fc10000816117fe919061476c565b600f8190555050565b61180f61209d565b73ffffffffffffffffffffffffffffffffffffffff1661182d611894565b73ffffffffffffffffffffffffffffffffffffffff1614611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90614415565b60405180910390fd5b61188b612726565b565b5f47905090565b5f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546118cc906141f1565b80601f01602080910402602001604051908101604052809291908181526020018280546118f8906141f1565b80156119435780601f1061191a57610100808354040283529160200191611943565b820191905f5260205f20905b81548152906001019060200180831161192657829003601f168201915b5050505050905090565b61195f61195861209d565b83836127c8565b5050565b61196b61209d565b73ffffffffffffffffffffffffffffffffffffffff16611989611894565b73ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d690614415565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611a47611a4161209d565b83612289565b611a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7d90614661565b60405180910390fd5b611a928484848461292f565b50505050565b6060611aa38261298b565b9050919050565b611ab261209d565b73ffffffffffffffffffffffffffffffffffffffff16611ad0611894565b73ffffffffffffffffffffffffffffffffffffffff1614611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90614415565b60405180910390fd5b601054611b31610d6d565b10611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b689061447d565b60405180910390fd5b6001151560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf8906145d3565b60405180910390fd5b611c0b828261215a565b5050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7590614c63565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16611c9e836114fc565b73ffffffffffffffffffffffffffffffffffffffff1614611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ceb90614ccb565b60405180910390fd5b5f600f549050611d0c33611d06611894565b85611336565b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611d4f573d5f803e3d5ffd5b50600191505092915050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611df161209d565b73ffffffffffffffffffffffffffffffffffffffff16611e0f611894565b73ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90614415565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90614d59565b60405180910390fd5b611edc81612661565b50565b5f600f54905090565b611ef061209d565b73ffffffffffffffffffffffffffffffffffffffff16611f0e611894565b73ffffffffffffffffffffffffffffffffffffffff1614611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b90614415565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061202e575061202d82612ad4565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660025f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b5f33905090565b8160045f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612114836114fc565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001151560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e1906145d3565b60405180910390fd5b6121f4600e612bb5565b5f600e73ffb72d542d6cee6d917560335dd7f34d0eed466063d602012f90916040518263ffffffff1660e01b815260040161222f9190614714565b602060405180830381865af415801561224a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226e9190614741565b905061227a8382612bc9565b6122848183612be6565b505050565b5f61229382612035565b6122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c990614de7565b60405180910390fd5b5f6122dc836114fc565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061234b57508373ffffffffffffffffffffffffffffffffffffffff16612333846109f6565b73ffffffffffffffffffffffffffffffffffffffff16145b8061235c575061235b8185611d5b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612385826114fc565b73ffffffffffffffffffffffffffffffffffffffff16146123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d290614e75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090614f03565b60405180910390fd5b612454838383612c51565b61245e5f826120a4565b600160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124ab9190614f21565b92505081905550600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124ff91906144c8565b925050819055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6125bd6114e7565b6125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390614f9e565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61263e61209d565b60405161264b9190613c13565b60405180910390a1565b61265e81612ca9565b50565b5f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61272e6114e7565b1561276e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276590614885565b60405180910390fd5b6001600d5f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586127b161209d565b6040516127be9190613c13565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d90615006565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516129229190613acd565b60405180910390a3505050565b61293a848484612365565b61294684848484612cf6565b612985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297c90615094565b60405180910390fd5b50505050565b606061299682612035565b6129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc90615122565b60405180910390fd5b5f600c5f8481526020019081526020015f2080546129f2906141f1565b80601f0160208091040260200160405190810160405280929190818152602001828054612a1e906141f1565b8015612a695780601f10612a4057610100808354040283529160200191612a69565b820191905f5260205f20905b815481529060010190602001808311612a4c57829003601f168201915b505050505090505f612a79612e78565b90505f815103612a8d578192505050612acf565b5f82511115612ac1578082604051602001612aa992919061517a565b60405160208183030381529060405292505050612acf565b612aca84612e98565b925050505b919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612b9e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612bae5750612bad82612fcb565b5b9050919050565b6001815f015f828254019250508190555050565b612be2828260405180602001604052805f815250613034565b5050565b612bef82612035565b612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c259061520d565b60405180910390fd5b80600c5f8481526020019081526020015f209081612c4c91906153c8565b505050565b612c596114e7565b15612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9090614885565b60405180910390fd5b612ca483838361311e565b505050565b612cb28161322e565b5f600c5f8381526020019081526020015f208054612ccf906141f1565b905014612cf357600c5f8281526020019081526020015f205f612cf291906139ca565b5b50565b5f612d168473ffffffffffffffffffffffffffffffffffffffff16613335565b15612e6b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d3f61209d565b8786866040518563ffffffff1660e01b8152600401612d6194939291906154e9565b6020604051808303815f875af1925050508015612d9c57506040513d601f19601f82011682018060405250810190612d999190615547565b60015b612e1b573d805f8114612dca576040519150601f19603f3d011682016040523d82523d5f602084013e612dcf565b606091505b505f815103612e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0a90615094565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e70565b600190505b949350505050565b606060405180606001604052806036815260200161580260369139905090565b6060612ea382612035565b612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed9906155e2565b60405180910390fd5b5f612eeb612e78565b90505f60078054612efb906141f1565b80601f0160208091040260200160405190810160405280929190818152602001828054612f27906141f1565b8015612f725780601f10612f4957610100808354040283529160200191612f72565b820191905f5260205f20905b815481529060010190602001808311612f5557829003601f168201915b505050505090505f825111612f955760405180602001604052805f815250612fc2565b81612f9f85613346565b82604051602001612fb293929190615600565b6040516020818303038152906040525b92505050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6001151560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036130c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bb906145d3565b60405180910390fd5b6130ce838361349f565b6130da5f848484612cf6565b613119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311090615094565b60405180910390fd5b505050565b6131298383836136f3565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361316a57613165816136f8565b6131a9565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146131a8576131a7838261373c565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131ea576131e581613892565b613229565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613228576132278282613952565b5b5b505050565b5f613238826114fc565b9050613245815f84612c51565b61324f5f836120a4565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461329c9190614f21565b9250508190555060025f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055815f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f80823b90505f8111915050919050565b60605f820361338c576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061349a565b5f8290505f5b5f82146133bb5780806133a490615630565b915050600a826133b491906156a4565b9150613392565b5f8167ffffffffffffffff8111156133d6576133d5613c9c565b5b6040519080825280601f01601f1916602001820160405280156134085781602001600182028036833780820191505090505b5090505b5f8514613493576001826134209190614f21565b9150600a8561342f91906156d4565b603061343b91906144c8565b60f81b81838151811061345157613450614a42565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a8561348c91906156a4565b945061340c565b8093505050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361350d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135049061574e565b60405180910390fd5b61351681612035565b15613556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354d906157b6565b60405180910390fd5b6001151560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036135e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135dd906145d3565b60405180910390fd5b6135f15f8383612c51565b600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461363e91906144c8565b925050819055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b600a80549050600b5f8381526020019081526020015f2081905550600a81908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f6001613748846115a8565b6137529190614f21565b90505f60095f8481526020019081526020015f20549050818114613829575f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160095f8381526020019081526020015f2081905550505b60095f8481526020019081526020015f205f905560085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f6001600a805490506138a59190614f21565b90505f600b5f8481526020019081526020015f205490505f600a83815481106138d1576138d0614a42565b5b905f5260205f200154905080600a83815481106138f1576138f0614a42565b5b905f5260205f20018190555081600b5f8381526020019081526020015f2081905550600b5f8581526020019081526020015f205f9055600a805480613939576139386157d4565b5b600190038181905f5260205f20015f9055905550505050565b5f61395c836115a8565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060095f8481526020019081526020015f2081905550505050565b5080546139d6906141f1565b5f825580601f106139e75750613a04565b601f0160209004905f5260205f2090810190613a039190613a07565b5b50565b5b80821115613a1e575f815f905550600101613a08565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a6781613a33565b8114613a71575f80fd5b50565b5f81359050613a8281613a5e565b92915050565b5f60208284031215613a9d57613a9c613a2b565b5b5f613aaa84828501613a74565b91505092915050565b5f8115159050919050565b613ac781613ab3565b82525050565b5f602082019050613ae05f830184613abe565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b2882613ae6565b613b328185613af0565b9350613b42818560208601613b00565b613b4b81613b0e565b840191505092915050565b5f6020820190508181035f830152613b6e8184613b1e565b905092915050565b5f819050919050565b613b8881613b76565b8114613b92575f80fd5b50565b5f81359050613ba381613b7f565b92915050565b5f60208284031215613bbe57613bbd613a2b565b5b5f613bcb84828501613b95565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613bfd82613bd4565b9050919050565b613c0d81613bf3565b82525050565b5f602082019050613c265f830184613c04565b92915050565b613c3581613bf3565b8114613c3f575f80fd5b50565b5f81359050613c5081613c2c565b92915050565b5f8060408385031215613c6c57613c6b613a2b565b5b5f613c7985828601613c42565b9250506020613c8a85828601613b95565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613cd282613b0e565b810181811067ffffffffffffffff82111715613cf157613cf0613c9c565b5b80604052505050565b5f613d03613a22565b9050613d0f8282613cc9565b919050565b5f67ffffffffffffffff821115613d2e57613d2d613c9c565b5b613d3782613b0e565b9050602081019050919050565b828183375f83830152505050565b5f613d64613d5f84613d14565b613cfa565b905082815260208101848484011115613d8057613d7f613c98565b5b613d8b848285613d44565b509392505050565b5f82601f830112613da757613da6613c94565b5b8135613db7848260208601613d52565b91505092915050565b5f805f60608486031215613dd757613dd6613a2b565b5b5f613de486828701613c42565b935050602084013567ffffffffffffffff811115613e0557613e04613a2f565b5b613e1186828701613d93565b9250506040613e2286828701613b95565b9150509250925092565b613e3581613b76565b82525050565b5f602082019050613e4e5f830184613e2c565b92915050565b5f805f60608486031215613e6b57613e6a613a2b565b5b5f613e7886828701613c42565b9350506020613e8986828701613c42565b9250506040613e9a86828701613b95565b9150509250925092565b5f60208284031215613eb957613eb8613a2b565b5b5f613ec684828501613c42565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f0181613b76565b82525050565b5f613f128383613ef8565b60208301905092915050565b5f602082019050919050565b5f613f3482613ecf565b613f3e8185613ed9565b9350613f4983613ee9565b805f5b83811015613f79578151613f608882613f07565b9750613f6b83613f1e565b925050600181019050613f4c565b5085935050505092915050565b5f6020820190508181035f830152613f9e8184613f2a565b905092915050565b613faf81613ab3565b8114613fb9575f80fd5b50565b5f81359050613fca81613fa6565b92915050565b5f8060408385031215613fe657613fe5613a2b565b5b5f613ff385828601613c42565b925050602061400485828601613fbc565b9150509250929050565b5f67ffffffffffffffff82111561402857614027613c9c565b5b61403182613b0e565b9050602081019050919050565b5f61405061404b8461400e565b613cfa565b90508281526020810184848401111561406c5761406b613c98565b5b614077848285613d44565b509392505050565b5f82601f83011261409357614092613c94565b5b81356140a384826020860161403e565b91505092915050565b5f805f80608085870312156140c4576140c3613a2b565b5b5f6140d187828801613c42565b94505060206140e287828801613c42565b93505060406140f387828801613b95565b925050606085013567ffffffffffffffff81111561411457614113613a2f565b5b6141208782880161407f565b91505092959194509250565b5f806040838503121561414257614141613a2b565b5b5f61414f85828601613c42565b925050602083013567ffffffffffffffff8111156141705761416f613a2f565b5b61417c85828601613d93565b9150509250929050565b5f806040838503121561419c5761419b613a2b565b5b5f6141a985828601613c42565b92505060206141ba85828601613c42565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061420857607f821691505b60208210810361421b5761421a6141c4565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e65785f8201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b5f61427b602c83613af0565b915061428682614221565b604082019050919050565b5f6020820190508181035f8301526142a88161426f565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f614309602183613af0565b9150614314826142af565b604082019050919050565b5f6020820190508181035f830152614336816142fd565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f775f8201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b5f614397603883613af0565b91506143a28261433d565b604082019050919050565b5f6020820190508181035f8301526143c48161438b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6143ff602083613af0565b915061440a826143cb565b602082019050919050565b5f6020820190508181035f83015261442c816143f3565b9050919050565b7f4e46543a204d617820537570706c7920616368697665640000000000000000005f82015250565b5f614467601783613af0565b915061447282614433565b602082019050919050565b5f6020820190508181035f8301526144948161445b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6144d282613b76565b91506144dd83613b76565b92508282019050808211156144f5576144f461449b565b5b92915050565b7f4e46543a20436865636b204d617820537570706c7900000000000000000000005f82015250565b5f61452f601583613af0565b915061453a826144fb565b602082019050919050565b5f6020820190508181035f83015261455c81614523565b9050919050565b7f746869732070617274696375796c6172206164647265737320697320626c61635f8201527f6b6c697374656400000000000000000000000000000000000000000000000000602082015250565b5f6145bd602783613af0565b91506145c882614563565b604082019050919050565b5f6020820190508181035f8301526145ea816145b1565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f5f8201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b5f61464b603183613af0565b9150614656826145f1565b604082019050919050565b5f6020820190508181035f8301526146788161463f565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f755f8201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b5f6146d9602b83613af0565b91506146e48261467f565b604082019050919050565b5f6020820190508181035f830152614706816146cd565b9050919050565b8082525050565b5f6020820190506147275f83018461470d565b92915050565b5f8151905061473b81613b7f565b92915050565b5f6020828403121561475657614755613a2b565b5b5f6147638482850161472d565b91505092915050565b5f61477682613b76565b915061478183613b76565b925082820261478f81613b76565b915082820484148315176147a6576147a561449b565b5b5092915050565b7f4e46543a204e465450726963652056532056616c756520616e64204d617820535f8201527f7570706c79000000000000000000000000000000000000000000000000000000602082015250565b5f614807602583613af0565b9150614812826147ad565b604082019050919050565b5f6020820190508181035f830152614834816147fb565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f61486f601083613af0565b915061487a8261483b565b602082019050919050565b5f6020820190508181035f83015261489c81614863565b9050919050565b7f4e46543a204e6f206574686572206c65667420746f20776974686472617700005f82015250565b5f6148d7601e83613af0565b91506148e2826148a3565b602082019050919050565b5f6020820190508181035f830152614904816148cb565b9050919050565b5f81905092915050565b50565b5f6149235f8361490b565b915061492e82614915565b5f82019050919050565b5f61494282614918565b9150819050919050565b7f4e46543a205472616e73666572206661696c65642e00000000000000000000005f82015250565b5f614980601583613af0565b915061498b8261494c565b602082019050919050565b5f6020820190508181035f8301526149ad81614974565b9050919050565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f775f8201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b5f614a0e603083613af0565b9150614a19826149b4565b604082019050919050565b5f6020820190508181035f830152614a3b81614a02565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f5f8201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b5f614ac9602c83613af0565b9150614ad482614a6f565b604082019050919050565b5f6020820190508181035f830152614af681614abd565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e65786973745f8201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b5f614b57602983613af0565b9150614b6282614afd565b604082019050919050565b5f6020820190508181035f830152614b8481614b4b565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f614be5602a83613af0565b9150614bf082614b8b565b604082019050919050565b5f6020820190508181035f830152614c1281614bd9565b9050919050565b7f63616e6e6f742073656e6420746f207a65726f206164647265737300000000005f82015250565b5f614c4d601b83613af0565b9150614c5882614c19565b602082019050919050565b5f6020820190508181035f830152614c7a81614c41565b9050919050565b7f6f6e6c79206f776e6572206f66204e46542063616e20726573616c65000000005f82015250565b5f614cb5601c83613af0565b9150614cc082614c81565b602082019050919050565b5f6020820190508181035f830152614ce281614ca9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614d43602683613af0565b9150614d4e82614ce9565b604082019050919050565b5f6020820190508181035f830152614d7081614d37565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e65785f8201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b5f614dd1602c83613af0565b9150614ddc82614d77565b604082019050919050565b5f6020820190508181035f830152614dfe81614dc5565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e207468617420695f8201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b5f614e5f602983613af0565b9150614e6a82614e05565b604082019050919050565b5f6020820190508181035f830152614e8c81614e53565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614eed602483613af0565b9150614ef882614e93565b604082019050919050565b5f6020820190508181035f830152614f1a81614ee1565b9050919050565b5f614f2b82613b76565b9150614f3683613b76565b9250828203905081811115614f4e57614f4d61449b565b5b92915050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f614f88601483613af0565b9150614f9382614f54565b602082019050919050565b5f6020820190508181035f830152614fb581614f7c565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c6572000000000000005f82015250565b5f614ff0601983613af0565b9150614ffb82614fbc565b602082019050919050565b5f6020820190508181035f83015261501d81614fe4565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e2045524337323152655f8201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b5f61507e603283613af0565b915061508982615024565b604082019050919050565b5f6020820190508181035f8301526150ab81615072565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f72205f8201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b5f61510c603183613af0565b9150615117826150b2565b604082019050919050565b5f6020820190508181035f83015261513981615100565b9050919050565b5f81905092915050565b5f61515482613ae6565b61515e8185615140565b935061516e818560208601613b00565b80840191505092915050565b5f615185828561514a565b9150615191828461514a565b91508190509392505050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e5f8201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b5f6151f7602e83613af0565b91506152028261519d565b604082019050919050565b5f6020820190508181035f830152615224816151eb565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026152877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261524c565b615291868361524c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6152cc6152c76152c284613b76565b6152a9565b613b76565b9050919050565b5f819050919050565b6152e5836152b2565b6152f96152f1826152d3565b848454615258565b825550505050565b5f90565b61530d615301565b6153188184846152dc565b505050565b5b8181101561533b576153305f82615305565b60018101905061531e565b5050565b601f821115615380576153518161522b565b61535a8461523d565b81016020851015615369578190505b61537d6153758561523d565b83018261531d565b50505b505050565b5f82821c905092915050565b5f6153a05f1984600802615385565b1980831691505092915050565b5f6153b88383615391565b9150826002028217905092915050565b6153d182613ae6565b67ffffffffffffffff8111156153ea576153e9613c9c565b5b6153f482546141f1565b6153ff82828561533f565b5f60209050601f831160018114615430575f841561541e578287015190505b61542885826153ad565b86555061548f565b601f19841661543e8661522b565b5f5b8281101561546557848901518255600182019150602085019450602081019050615440565b86831015615482578489015161547e601f891682615391565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f6154bb82615497565b6154c581856154a1565b93506154d5818560208601613b00565b6154de81613b0e565b840191505092915050565b5f6080820190506154fc5f830187613c04565b6155096020830186613c04565b6155166040830185613e2c565b818103606083015261552881846154b1565b905095945050505050565b5f8151905061554181613a5e565b92915050565b5f6020828403121561555c5761555b613a2b565b5b5f61556984828501615533565b91505092915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f6155cc602f83613af0565b91506155d782615572565b604082019050919050565b5f6020820190508181035f8301526155f9816155c0565b9050919050565b5f61560b828661514a565b9150615617828561514a565b9150615623828461514a565b9150819050949350505050565b5f61563a82613b76565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361566c5761566b61449b565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6156ae82613b76565b91506156b983613b76565b9250826156c9576156c8615677565b5b828204905092915050565b5f6156de82613b76565b91506156e983613b76565b9250826156f9576156f8615677565b5b828206905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f20616464726573735f82015250565b5f615738602083613af0565b915061574382615704565b602082019050919050565b5f6020820190508181035f8301526157658161572c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e746564000000005f82015250565b5f6157a0601c83613af0565b91506157ab8261576c565b602082019050919050565b5f6020820190508181035f8301526157cd81615794565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe697066733a2f2f516d554135356d6a455677526567646b6d35346e6458416e4b5338515774626934766b576a484731387a386354522fa2646970667358221220a910e708050f5874f5aa290786057ca00bf8bd18dcf79dc27732ffa408aa2ba664736f6c634300081a0033