60806040526040518060400160405280601f81526020017f5769746864726177616c20426164676520646562726964676574682e636f6d00815250600390816100489190610c15565b506040518060400160405280600e81526020017f646562726964676574682e636f6d0000000000000000000000000000000000008152506004908161008d9190610c15565b50613a9860055534801561009f575f80fd5b506040518060600160405280603581526020016133a8603591396100c88161012560201b60201c565b505f600190505b6002811161011f5761010c73c32af326bb6a201fef8e823e5ebcc078bcf4399882600160405180602001604052805f81525061013860201b60201c565b808061011790610d11565b9150506100cf565b506110fa565b80600290816101349190610c15565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036101a8575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161019f9190610d97565b60405180910390fd5b5f806101ba85856101d960201b60201c565b915091506101d15f8784848761020960201b60201c565b505050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b61021b858585856102cd60201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146102c6575f61025d61066360201b60201c565b905060018451036102af575f61027c5f8661066a60201b90919060201c565b90505f6102925f8661066a60201b90919060201c565b90506102a883898985858961067d60201b60201c565b50506102c4565b6102c381878787878761082c60201b60201c565b5b505b5050505050565b805182511461031757815181516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161030e929190610dbf565b60405180910390fd5b5f61032661066360201b60201c565b90505f5b8351811015610522575f610347828661066a60201b90919060201c565b90505f61035d838661066a60201b90919060201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610480575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561042c57888183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016104239493929190610de6565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461051557805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461050d9190610e29565b925050819055505b505080600101905061032a565b5060018351036105dd575f6105405f8561066a60201b90919060201c565b90505f6105565f8561066a60201b90919060201c565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516105ce929190610dbf565b60405180910390a4505061065c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610653929190610f13565b60405180910390a45b5050505050565b5f33905090565b5f60208202602084010151905092915050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115610824578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016106dd959493929190610fb8565b6020604051808303815f875af192505050801561071857506040513d601f19601f820116820180604052508101906107159190611069565b60015b610799573d805f8114610746576040519150601f19603f3d011682016040523d82523d5f602084013e61074b565b606091505b505f81510361079157846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016107889190610d97565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461082257846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016108199190610d97565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156109d3578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161088c959493929190611094565b6020604051808303815f875af19250505080156108c757506040513d601f19601f820116820180604052508101906108c49190611069565b60015b610948573d805f81146108f5576040519150601f19603f3d011682016040523d82523d5f602084013e6108fa565b606091505b505f81510361094057846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016109379190610d97565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146109d157846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016109c89190610d97565b60405180910390fd5b505b505050505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610a5657607f821691505b602082108103610a6957610a68610a12565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610acb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610a90565b610ad58683610a90565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610b19610b14610b0f84610aed565b610af6565b610aed565b9050919050565b5f819050919050565b610b3283610aff565b610b46610b3e82610b20565b848454610a9c565b825550505050565b5f90565b610b5a610b4e565b610b65818484610b29565b505050565b5b81811015610b8857610b7d5f82610b52565b600181019050610b6b565b5050565b601f821115610bcd57610b9e81610a6f565b610ba784610a81565b81016020851015610bb6578190505b610bca610bc285610a81565b830182610b6a565b50505b505050565b5f82821c905092915050565b5f610bed5f1984600802610bd2565b1980831691505092915050565b5f610c058383610bde565b9150826002028217905092915050565b610c1e826109db565b67ffffffffffffffff811115610c3757610c366109e5565b5b610c418254610a3f565b610c4c828285610b8c565b5f60209050601f831160018114610c7d575f8415610c6b578287015190505b610c758582610bfa565b865550610cdc565b601f198416610c8b86610a6f565b5f5b82811015610cb257848901518255600182019150602085019450602081019050610c8d565b86831015610ccf5784890151610ccb601f891682610bde565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d1b82610aed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d4d57610d4c610ce4565b5b600182019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d8182610d58565b9050919050565b610d9181610d77565b82525050565b5f602082019050610daa5f830184610d88565b92915050565b610db981610aed565b82525050565b5f604082019050610dd25f830185610db0565b610ddf6020830184610db0565b9392505050565b5f608082019050610df95f830187610d88565b610e066020830186610db0565b610e136040830185610db0565b610e206060830184610db0565b95945050505050565b5f610e3382610aed565b9150610e3e83610aed565b9250828201905080821115610e5657610e55610ce4565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610e8e81610aed565b82525050565b5f610e9f8383610e85565b60208301905092915050565b5f602082019050919050565b5f610ec182610e5c565b610ecb8185610e66565b9350610ed683610e76565b805f5b83811015610f06578151610eed8882610e94565b9750610ef883610eab565b925050600181019050610ed9565b5085935050505092915050565b5f6040820190508181035f830152610f2b8185610eb7565b90508181036020830152610f3f8184610eb7565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f8a82610f48565b610f948185610f52565b9350610fa4818560208601610f62565b610fad81610f70565b840191505092915050565b5f60a082019050610fcb5f830188610d88565b610fd86020830187610d88565b610fe56040830186610db0565b610ff26060830185610db0565b81810360808301526110048184610f80565b90509695505050505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61104881611014565b8114611052575f80fd5b50565b5f815190506110638161103f565b92915050565b5f6020828403121561107e5761107d611010565b5b5f61108b84828501611055565b91505092915050565b5f60a0820190506110a75f830188610d88565b6110b46020830187610d88565b81810360408301526110c68186610eb7565b905081810360608301526110da8185610eb7565b905081810360808301526110ee8184610f80565b90509695505050505050565b6122a1806111075f395ff3fe6080604052600436106100a5575f3560e01c80634b2a4c79116100635780634b2a4c79146101d95780634e1273f4146101f557806395d89b4114610231578063a22cb4651461025b578063e985e9c514610283578063f242432a146102bf576100a5565b8062fdd58e146100a957806301ffc9a7146100e557806306fdde03146101215780630e89341c1461014b57806318160ddd146101875780632eb2c2d6146101b1575b5f80fd5b3480156100b4575f80fd5b506100cf60048036038101906100ca91906115fe565b6102e7565b6040516100dc919061164b565b60405180910390f35b3480156100f0575f80fd5b5061010b600480360381019061010691906116b9565b61033c565b60405161011891906116fe565b60405180910390f35b34801561012c575f80fd5b5061013561041d565b6040516101429190611787565b60405180910390f35b348015610156575f80fd5b50610171600480360381019061016c91906117a7565b6104a9565b60405161017e9190611787565b60405180910390f35b348015610192575f80fd5b5061019b61053b565b6040516101a8919061164b565b60405180910390f35b3480156101bc575f80fd5b506101d760048036038101906101d291906119c2565b610541565b005b6101f360048036038101906101ee9190611ae6565b6105e8565b005b348015610200575f80fd5b5061021b60048036038101906102169190611bf1565b6106bf565b6040516102289190611d1e565b60405180910390f35b34801561023c575f80fd5b506102456107c6565b6040516102529190611787565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190611d68565b610852565b005b34801561028e575f80fd5b506102a960048036038101906102a49190611da6565b610868565b6040516102b691906116fe565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e09190611de4565b6108f6565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061040657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061041657506104158261099d565b5b9050919050565b6003805461042a90611ea4565b80601f016020809104026020016040519081016040528092919081815260200182805461045690611ea4565b80156104a15780601f10610478576101008083540402835291602001916104a1565b820191905f5260205f20905b81548152906001019060200180831161048457829003601f168201915b505050505081565b6060600280546104b890611ea4565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490611ea4565b801561052f5780601f106105065761010080835404028352916020019161052f565b820191905f5260205f20905b81548152906001019060200180831161051257829003601f168201915b50505050509050919050565b60055481565b5f61054a610a06565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561058f575061058d8682610868565b155b156105d35780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016105ca929190611ee3565b60405180910390fd5b6105e08686868686610a0d565b505050505050565b5f5b828290508110156106ba5782828281811061060857610607611f0a565b5b905060200201602081019061061d9190611f37565b73ffffffffffffffffffffffffffffffffffffffff167343de2d77bf8027e25dbd179b491e8d64f38398aa73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f625f60016040516106a7929190611fdd565b60405180910390a48060010190506105ea565b505050565b6060815183511461070b57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610702929190612004565b60405180910390fd5b5f835167ffffffffffffffff811115610727576107266117d6565b5b6040519080825280602002602001820160405280156107555781602001602082028036833780820191505090505b5090505f5b84518110156107bb576107916107798287610b0190919063ffffffff16565b61078c8387610b1490919063ffffffff16565b6102e7565b8282815181106107a4576107a3611f0a565b5b60200260200101818152505080600101905061075a565b508091505092915050565b600480546107d390611ea4565b80601f01602080910402602001604051908101604052809291908181526020018280546107ff90611ea4565b801561084a5780601f106108215761010080835404028352916020019161084a565b820191905f5260205f20905b81548152906001019060200180831161082d57829003601f168201915b505050505081565b61086461085d610a06565b8383610b27565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f6108ff610a06565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561094457506109428682610868565b155b156109885780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161097f929190611ee3565b60405180910390fd5b6109958686868686610c90565b505050505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a7d575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610a74919061202b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610aed575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610ae4919061202b565b60405180910390fd5b610afa8585858585610d96565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b97575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401610b8e919061202b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610c8391906116fe565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d00575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610cf7919061202b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610d70575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610d67919061202b565b60405180910390fd5b5f80610d7c8585610e42565b91509150610d8d8787848487610d96565b50505050505050565b610da285858585610e72565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610e3b575f610dde610a06565b90506001845103610e2a575f610dfd5f86610b1490919063ffffffff16565b90505f610e135f86610b1490919063ffffffff16565b9050610e23838989858589611202565b5050610e39565b610e388187878787876113b1565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b8051825114610ebc57815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610eb3929190612004565b60405180910390fd5b5f610ec5610a06565b90505f5b83518110156110c1575f610ee68286610b1490919063ffffffff16565b90505f610efc8386610b1490919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461101f575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610fcb57888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401610fc29493929190612044565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146110b457805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110ac91906120b4565b925050819055505b5050806001019050610ec9565b50600183510361117c575f6110df5f85610b1490919063ffffffff16565b90505f6110f55f85610b1490919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161116d929190612004565b60405180910390a450506111fb565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516111f29291906120e7565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156113a9578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161126295949392919061216e565b6020604051808303815f875af192505050801561129d57506040513d601f19601f8201168201806040525081019061129a91906121da565b60015b61131e573d805f81146112cb576040519150601f19603f3d011682016040523d82523d5f602084013e6112d0565b606091505b505f81510361131657846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161130d919061202b565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113a757846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161139e919061202b565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611558578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611411959493929190612205565b6020604051808303815f875af192505050801561144c57506040513d601f19601f8201168201806040525081019061144991906121da565b60015b6114cd573d805f811461147a576040519150601f19603f3d011682016040523d82523d5f602084013e61147f565b606091505b505f8151036114c557846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114bc919061202b565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461155657846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161154d919061202b565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61159a82611571565b9050919050565b6115aa81611590565b81146115b4575f80fd5b50565b5f813590506115c5816115a1565b92915050565b5f819050919050565b6115dd816115cb565b81146115e7575f80fd5b50565b5f813590506115f8816115d4565b92915050565b5f806040838503121561161457611613611569565b5b5f611621858286016115b7565b9250506020611632858286016115ea565b9150509250929050565b611645816115cb565b82525050565b5f60208201905061165e5f83018461163c565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61169881611664565b81146116a2575f80fd5b50565b5f813590506116b38161168f565b92915050565b5f602082840312156116ce576116cd611569565b5b5f6116db848285016116a5565b91505092915050565b5f8115159050919050565b6116f8816116e4565b82525050565b5f6020820190506117115f8301846116ef565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61175982611717565b6117638185611721565b9350611773818560208601611731565b61177c8161173f565b840191505092915050565b5f6020820190508181035f83015261179f818461174f565b905092915050565b5f602082840312156117bc576117bb611569565b5b5f6117c9848285016115ea565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61180c8261173f565b810181811067ffffffffffffffff8211171561182b5761182a6117d6565b5b80604052505050565b5f61183d611560565b90506118498282611803565b919050565b5f67ffffffffffffffff821115611868576118676117d6565b5b602082029050602081019050919050565b5f80fd5b5f61188f61188a8461184e565b611834565b905080838252602082019050602084028301858111156118b2576118b1611879565b5b835b818110156118db57806118c788826115ea565b8452602084019350506020810190506118b4565b5050509392505050565b5f82601f8301126118f9576118f86117d2565b5b813561190984826020860161187d565b91505092915050565b5f80fd5b5f67ffffffffffffffff8211156119305761192f6117d6565b5b6119398261173f565b9050602081019050919050565b828183375f83830152505050565b5f61196661196184611916565b611834565b90508281526020810184848401111561198257611981611912565b5b61198d848285611946565b509392505050565b5f82601f8301126119a9576119a86117d2565b5b81356119b9848260208601611954565b91505092915050565b5f805f805f60a086880312156119db576119da611569565b5b5f6119e8888289016115b7565b95505060206119f9888289016115b7565b945050604086013567ffffffffffffffff811115611a1a57611a1961156d565b5b611a26888289016118e5565b935050606086013567ffffffffffffffff811115611a4757611a4661156d565b5b611a53888289016118e5565b925050608086013567ffffffffffffffff811115611a7457611a7361156d565b5b611a8088828901611995565b9150509295509295909350565b5f80fd5b5f8083601f840112611aa657611aa56117d2565b5b8235905067ffffffffffffffff811115611ac357611ac2611a8d565b5b602083019150836020820283011115611adf57611ade611879565b5b9250929050565b5f8060208385031215611afc57611afb611569565b5b5f83013567ffffffffffffffff811115611b1957611b1861156d565b5b611b2585828601611a91565b92509250509250929050565b5f67ffffffffffffffff821115611b4b57611b4a6117d6565b5b602082029050602081019050919050565b5f611b6e611b6984611b31565b611834565b90508083825260208201905060208402830185811115611b9157611b90611879565b5b835b81811015611bba5780611ba688826115b7565b845260208401935050602081019050611b93565b5050509392505050565b5f82601f830112611bd857611bd76117d2565b5b8135611be8848260208601611b5c565b91505092915050565b5f8060408385031215611c0757611c06611569565b5b5f83013567ffffffffffffffff811115611c2457611c2361156d565b5b611c3085828601611bc4565b925050602083013567ffffffffffffffff811115611c5157611c5061156d565b5b611c5d858286016118e5565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611c99816115cb565b82525050565b5f611caa8383611c90565b60208301905092915050565b5f602082019050919050565b5f611ccc82611c67565b611cd68185611c71565b9350611ce183611c81565b805f5b83811015611d11578151611cf88882611c9f565b9750611d0383611cb6565b925050600181019050611ce4565b5085935050505092915050565b5f6020820190508181035f830152611d368184611cc2565b905092915050565b611d47816116e4565b8114611d51575f80fd5b50565b5f81359050611d6281611d3e565b92915050565b5f8060408385031215611d7e57611d7d611569565b5b5f611d8b858286016115b7565b9250506020611d9c85828601611d54565b9150509250929050565b5f8060408385031215611dbc57611dbb611569565b5b5f611dc9858286016115b7565b9250506020611dda858286016115b7565b9150509250929050565b5f805f805f60a08688031215611dfd57611dfc611569565b5b5f611e0a888289016115b7565b9550506020611e1b888289016115b7565b9450506040611e2c888289016115ea565b9350506060611e3d888289016115ea565b925050608086013567ffffffffffffffff811115611e5e57611e5d61156d565b5b611e6a88828901611995565b9150509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ebb57607f821691505b602082108103611ece57611ecd611e77565b5b50919050565b611edd81611590565b82525050565b5f604082019050611ef65f830185611ed4565b611f036020830184611ed4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611f4c57611f4b611569565b5b5f611f59848285016115b7565b91505092915050565b5f819050919050565b5f819050919050565b5f611f8e611f89611f8484611f62565b611f6b565b6115cb565b9050919050565b611f9e81611f74565b82525050565b5f819050919050565b5f611fc7611fc2611fbd84611fa4565b611f6b565b6115cb565b9050919050565b611fd781611fad565b82525050565b5f604082019050611ff05f830185611f95565b611ffd6020830184611fce565b9392505050565b5f6040820190506120175f83018561163c565b612024602083018461163c565b9392505050565b5f60208201905061203e5f830184611ed4565b92915050565b5f6080820190506120575f830187611ed4565b612064602083018661163c565b612071604083018561163c565b61207e606083018461163c565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120be826115cb565b91506120c9836115cb565b92508282019050808211156120e1576120e0612087565b5b92915050565b5f6040820190508181035f8301526120ff8185611cc2565b905081810360208301526121138184611cc2565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6121408261211c565b61214a8185612126565b935061215a818560208601611731565b6121638161173f565b840191505092915050565b5f60a0820190506121815f830188611ed4565b61218e6020830187611ed4565b61219b604083018661163c565b6121a8606083018561163c565b81810360808301526121ba8184612136565b90509695505050505050565b5f815190506121d48161168f565b92915050565b5f602082840312156121ef576121ee611569565b5b5f6121fc848285016121c6565b91505092915050565b5f60a0820190506122185f830188611ed4565b6122256020830187611ed4565b81810360408301526122378186611cc2565b9050818103606083015261224b8185611cc2565b9050818103608083015261225f8184612136565b9050969550505050505056fea264697066735822122006ad603ce633cbb7574ec5c4250fecc06a3e1a3b65c2f71066587f9d618c2fb864736f6c634300081a0033697066733a2f2f516d5241635a636b32736933457370427858444d62754c635176696438597176314d764d7938706e394a4d467761