ctx = 0x7fffe4000950
fs = @0x7ffff0000b00: {
bpb = std::unique_ptr<wtfs_bpb> containing 0x7ffff0000ba0,
files = std::unique_ptr<wtfs_file> containing 0x7ffff0001bb0,
filedata_cache = std::map with 3 elements = {
[{
first = 10,
second = 11
}] = std::unique_ptr<wtfs_filedata> containing 0x7ffff0004bc0,
[{
first = 13,
second = 13
}] = std::unique_ptr<wtfs_filedata> containing 0x7ffff0006c10,
[{
first = 14,
second = 14
}] = std::unique_ptr<wtfs_filedata> containing 0x7ffff0007c60
},
root = {
parent = 0x0,
directory_file = 0,
subdirectories = {
<boost::container::container_detail::tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::new_allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> >, boost::container::tree_opt<(boost::container::tree_type_enum)0, true> >> = {
<boost::container::container_detail::node_alloc_holder<boost::container::new_allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> >, boost::intrusive::rbtree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, unsigned long, true, void> >> = {
members_ = {
<boost::container::new_allocator<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true> >> = {<No data fields>},
members of boost::container::container_detail::node_alloc_holder<boost::container::new_allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> >, boost::intrusive::rbtree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, unsigned long, true, void> >::members_holder:
m_icont = {
<boost::intrusive::bstree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, unsigned long, true, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::bstbase<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, true, unsigned long, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::bstbase_hack<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, true, unsigned long, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::detail::size_holder<true, unsigned long, void>> = {
static constant_time_size = <optimized out>,
size_ = 1
},
<boost::intrusive::bstbase2<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::detail::ebo_functor_holder<boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > > >> = {
<boost::intrusive::detail::ebo_functor_holder_impl<boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, false>> = {
<boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >> = {
<boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > >> = {
<std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {
<std::binary_function<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>},
<boost::intrusive::bstbase3<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, (boost::intrusive::algo_types)5, void>> = {
static safemode_or_autounlink = <optimized out>,
static stateful_value_traits = <optimized out>,
static has_container_from_iterator = <optimized out>,
holder = {
<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>> = {
<boost::intrusive::bhtraits_base<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::compact_rbtree_node<void*>*, boost::intrusive::dft_tag, 3u>> = {<No data fields>},
members of boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>:
static link_mode = <optimized out>
},
members of boost::intrusive::bstbase3<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, (boost::intrusive::algo_types)5, void>::holder_t:
root = {
<boost::intrusive::compact_rbtree_node<void*>> = {
parent_ = 0x7ffff0008d00,
left_ = 0x7ffff0008d00,
right_ = 0x7ffff0008d00
}, <No data fields>}
}
}, <No data fields>}, <No data fields>}, <No data fields>},
members of boost::intrusive::bstree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, unsigned long, true, (boost::intrusive::algo_types)5, void>:
static constant_time_size = true,
static stateful_value_traits = <optimized out>,
static safemode_or_autounlink = <optimized out>
},
members of boost::intrusive::rbtree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, directory> > > >, unsigned long, true, void>:
static constant_time_size = true
}
}
}, <No data fields>}, <No data fields>},
files = {
<boost::container::container_detail::tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::new_allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> >, boost::container::tree_opt<(boost::container::tree_type_enum)0, true> >> = {
<boost::container::container_detail::node_alloc_holder<boost::container::new_allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> >, boost::intrusive::rbtree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, unsigned long, true, void> >> = {
members_ = {
<boost::container::new_allocator<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true> >> = {<No data fields>},
members of boost::container::container_detail::node_alloc_holder<boost::container::new_allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> >, boost::intrusive::rbtree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, unsigned long, true, void> >::members_holder:
m_icont = {
<boost::intrusive::bstree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, unsigned long, true, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::bstbase<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, true, unsigned long, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::bstbase_hack<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, true, unsigned long, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::detail::size_holder<true, unsigned long, void>> = {
static constant_time_size = <optimized out>,
size_ = 0
},
<boost::intrusive::bstbase2<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, (boost::intrusive::algo_types)5, void>> = {
<boost::intrusive::detail::ebo_functor_holder<boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > > >> = {
<boost::intrusive::detail::ebo_functor_holder_impl<boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, false>> = {
<boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >> = {
<boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >> = {
<std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {
<std::binary_function<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>},
<boost::intrusive::bstbase3<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, (boost::intrusive::algo_types)5, void>> = {
static safemode_or_autounlink = <optimized out>,
static stateful_value_traits = <optimized out>,
static has_container_from_iterator = <optimized out>,
holder = {
<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>> = {
<boost::intrusive::bhtraits_base<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::compact_rbtree_node<void*>*, boost::intrusive::dft_tag, 3u>> = {<No data fields>},
members of boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>:
static link_mode = <optimized out>
},
members of boost::intrusive::bstbase3<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, (boost::intrusive::algo_types)5, void>::holder_t:
root = {
<boost::intrusive::compact_rbtree_node<void*>> = {
parent_ = 0x0,
left_ = 0x7ffff0000b78,
right_ = 0x7ffff0000b78
}, <No data fields>}
}
}, <No data fields>}, <No data fields>}, <No data fields>},
members of boost::intrusive::bstree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, unsigned long, true, (boost::intrusive::algo_types)5, void>:
static constant_time_size = true,
static stateful_value_traits = <optimized out>,
static safemode_or_autounlink = <optimized out>
},
members of boost::intrusive::rbtree_impl<boost::intrusive::bhtraits<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::intrusive::rbtree_node_traits<void*, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 3u>, boost::container::value_to_node_compare<boost::container::container_detail::tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, void*, (boost::container::tree_type_enum)0, true>, boost::container::container_detail::tree_value_compare<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::container::container_detail::select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, unsigned long, true, void>:
static constant_time_size = true
}
}
}, <No data fields>}, <No data fields>}
}
}
fileopt = {
<boost::optional_detail::optional_base<std::pair<directory&, unsigned long> >> = {
<boost::optional_detail::optional_tag> = {<No data fields>},
members of boost::optional_detail::optional_base<std::pair<directory&, unsigned long> >:
m_initialized = false,
m_storage = {
dummy_ = {
data = "\254w\272\367\377\177\000\000\300\240b\000\000\000\000",
aligner_ = {<No data fields>}
}
}
}, <No data fields>}
Y3R4ID0gMHg3ZmZmZTQwMDA5NTAKZnMgPSBAMHg3ZmZmZjAwMDBiMDA6IHsKICBicGIgPSBzdGQ6OnVuaXF1ZV9wdHI8d3Rmc19icGI+IGNvbnRhaW5pbmcgMHg3ZmZmZjAwMDBiYTAsIAogIGZpbGVzID0gc3RkOjp1bmlxdWVfcHRyPHd0ZnNfZmlsZT4gY29udGFpbmluZyAweDdmZmZmMDAwMWJiMCwgCiAgZmlsZWRhdGFfY2FjaGUgPSBzdGQ6Om1hcCB3aXRoIDMgZWxlbWVudHMgPSB7CiAgICBbewogICAgICBmaXJzdCA9IDEwLCAKICAgICAgc2Vjb25kID0gMTEKICAgIH1dID0gc3RkOjp1bmlxdWVfcHRyPHd0ZnNfZmlsZWRhdGE+IGNvbnRhaW5pbmcgMHg3ZmZmZjAwMDRiYzAsCiAgICBbewogICAgICBmaXJzdCA9IDEzLCAKICAgICAgc2Vjb25kID0gMTMKICAgIH1dID0gc3RkOjp1bmlxdWVfcHRyPHd0ZnNfZmlsZWRhdGE+IGNvbnRhaW5pbmcgMHg3ZmZmZjAwMDZjMTAsCiAgICBbewogICAgICBmaXJzdCA9IDE0LCAKICAgICAgc2Vjb25kID0gMTQKICAgIH1dID0gc3RkOjp1bmlxdWVfcHRyPHd0ZnNfZmlsZWRhdGE+IGNvbnRhaW5pbmcgMHg3ZmZmZjAwMDdjNjAKICB9LCAKICByb290ID0gewogICAgcGFyZW50ID0gMHgwLCAKICAgIGRpcmVjdG9yeV9maWxlID0gMCwgCiAgICBzdWJkaXJlY3RvcmllcyA9IHsKICAgICAgPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpuZXdfYWxsb2NhdG9yPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+ID4sIGJvb3N0Ojpjb250YWluZXI6OnRyZWVfb3B0PChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiA+PiA9IHsKICAgICAgICA8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6bm9kZV9hbGxvY19ob2xkZXI8Ym9vc3Q6OmNvbnRhaW5lcjo6bmV3X2FsbG9jYXRvcjxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfaW1wbDxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4sIGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfdmFsdWVfY29tcGFyZTxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+LCBzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+ID4gPiA+LCB1bnNpZ25lZCBsb25nLCB0cnVlLCB2b2lkPiA+PiA9IHsKICAgICAgICAgIG1lbWJlcnNfID0gewogICAgICAgICAgICA8Ym9vc3Q6OmNvbnRhaW5lcjo6bmV3X2FsbG9jYXRvcjxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4gPj4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIAogICAgICAgICAgICBtZW1iZXJzIG9mIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6Om5vZGVfYWxsb2NfaG9sZGVyPGJvb3N0Ojpjb250YWluZXI6Om5ld19hbGxvY2F0b3I8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4gPiwgYm9vc3Q6OmludHJ1c2l2ZTo6cmJ0cmVlX2ltcGw8Ym9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCBib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+ID4gPiwgdW5zaWduZWQgbG9uZywgdHJ1ZSwgdm9pZD4gPjo6bWVtYmVyc19ob2xkZXI6IAogICAgICAgICAgICBtX2ljb250ID0gewogICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpic3RyZWVfaW1wbDxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4sIGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfdmFsdWVfY29tcGFyZTxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+LCBzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+ID4gPiA+LCB1bnNpZ25lZCBsb25nLCB0cnVlLCAoYm9vc3Q6OmludHJ1c2l2ZTo6YWxnb190eXBlcyk1LCB2b2lkPj4gPSB7CiAgICAgICAgICAgICAgICA8Ym9vc3Q6OmludHJ1c2l2ZTo6YnN0YmFzZTxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4sIGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfdmFsdWVfY29tcGFyZTxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+LCBzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+ID4gPiA+LCB0cnVlLCB1bnNpZ25lZCBsb25nLCAoYm9vc3Q6OmludHJ1c2l2ZTo6YWxnb190eXBlcyk1LCB2b2lkPj4gPSB7CiAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpic3RiYXNlX2hhY2s8Ym9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCBib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+ID4gPiwgdHJ1ZSwgdW5zaWduZWQgbG9uZywgKGJvb3N0OjppbnRydXNpdmU6OmFsZ29fdHlwZXMpNSwgdm9pZD4+ID0gewogICAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnNpemVfaG9sZGVyPHRydWUsIHVuc2lnbmVkIGxvbmcsIHZvaWQ+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGFudF90aW1lX3NpemUgPSA8b3B0aW1pemVkIG91dD4sIAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV8gPSAxCiAgICAgICAgICAgICAgICAgICAgfSwgCiAgICAgICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmJzdGJhc2UyPGJvb3N0OjppbnRydXNpdmU6OmJodHJhaXRzPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmludHJ1c2l2ZTo6cmJ0cmVlX25vZGVfdHJhaXRzPHZvaWQqLCB0cnVlPiwgKGJvb3N0OjppbnRydXNpdmU6OmxpbmtfbW9kZV90eXBlKTAsIGJvb3N0OjppbnRydXNpdmU6OmRmdF90YWcsIDN1PiwgYm9vc3Q6OmNvbnRhaW5lcjo6dmFsdWVfdG9fbm9kZV9jb21wYXJlPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV92YWx1ZV9jb21wYXJlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjpzZWxlY3Qxc3Q8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4gPiA+ID4sIChib29zdDo6aW50cnVzaXZlOjphbGdvX3R5cGVzKTUsIHZvaWQ+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmVib19mdW5jdG9yX2hvbGRlcjxib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+ID4gPiA+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6ZWJvX2Z1bmN0b3JfaG9sZGVyX2ltcGw8Ym9vc3Q6OmNvbnRhaW5lcjo6dmFsdWVfdG9fbm9kZV9jb21wYXJlPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV92YWx1ZV9jb21wYXJlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjpzZWxlY3Qxc3Q8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4gPiA+ID4sIGZhbHNlPj4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfdmFsdWVfY29tcGFyZTxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+LCBzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+ID4gPiA+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+ID4+ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPj4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIGJvb2w+PiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCAKICAgICAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpic3RiYXNlMzxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4sIChib29zdDo6aW50cnVzaXZlOjphbGdvX3R5cGVzKTUsIHZvaWQ+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIHNhZmVtb2RlX29yX2F1dG91bmxpbmsgPSA8b3B0aW1pemVkIG91dD4sIAogICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMgc3RhdGVmdWxfdmFsdWVfdHJhaXRzID0gPG9wdGltaXplZCBvdXQ+LCAKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGhhc19jb250YWluZXJfZnJvbV9pdGVyYXRvciA9IDxvcHRpbWl6ZWQgb3V0PiwgCiAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICA8Ym9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0c19iYXNlPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmludHJ1c2l2ZTo6Y29tcGFjdF9yYnRyZWVfbm9kZTx2b2lkKj4qLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4+ID0gezxObyBkYXRhIGZpZWxkcz59LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlcnMgb2YgYm9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+OiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBsaW5rX21vZGUgPSA8b3B0aW1pemVkIG91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAKICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJzIG9mIGJvb3N0OjppbnRydXNpdmU6OmJzdGJhc2UzPGJvb3N0OjppbnRydXNpdmU6OmJodHJhaXRzPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5Piwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmludHJ1c2l2ZTo6cmJ0cmVlX25vZGVfdHJhaXRzPHZvaWQqLCB0cnVlPiwgKGJvb3N0OjppbnRydXNpdmU6OmxpbmtfbW9kZV90eXBlKTAsIGJvb3N0OjppbnRydXNpdmU6OmRmdF90YWcsIDN1PiwgKGJvb3N0OjppbnRydXNpdmU6OmFsZ29fdHlwZXMpNSwgdm9pZD46OmhvbGRlcl90OiAKICAgICAgICAgICAgICAgICAgICAgICAgICByb290ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmNvbXBhY3RfcmJ0cmVlX25vZGU8dm9pZCo+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50XyA9IDB4N2ZmZmYwMDA4ZDAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdF8gPSAweDdmZmZmMDAwOGQwMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0XyA9IDB4N2ZmZmYwMDA4ZDAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA8Tm8gZGF0YSBmaWVsZHM+fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCAKICAgICAgICAgICAgICAgIG1lbWJlcnMgb2YgYm9vc3Q6OmludHJ1c2l2ZTo6YnN0cmVlX2ltcGw8Ym9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCBib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+ID4gPiwgdW5zaWduZWQgbG9uZywgdHJ1ZSwgKGJvb3N0OjppbnRydXNpdmU6OmFsZ29fdHlwZXMpNSwgdm9pZD46IAogICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0YW50X3RpbWVfc2l6ZSA9IHRydWUsIAogICAgICAgICAgICAgICAgc3RhdGljIHN0YXRlZnVsX3ZhbHVlX3RyYWl0cyA9IDxvcHRpbWl6ZWQgb3V0PiwgCiAgICAgICAgICAgICAgICBzdGF0aWMgc2FmZW1vZGVfb3JfYXV0b3VubGluayA9IDxvcHRpbWl6ZWQgb3V0PgogICAgICAgICAgICAgIH0sIAogICAgICAgICAgICAgIG1lbWJlcnMgb2YgYm9vc3Q6OmludHJ1c2l2ZTo6cmJ0cmVlX2ltcGw8Ym9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCBib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCBkaXJlY3Rvcnk+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIGRpcmVjdG9yeT4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgZGlyZWN0b3J5PiA+ID4gPiwgdW5zaWduZWQgbG9uZywgdHJ1ZSwgdm9pZD46IAogICAgICAgICAgICAgIHN0YXRpYyBjb25zdGFudF90aW1lX3NpemUgPSB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIAogICAgZmlsZXMgPSB7CiAgICAgIDxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpuZXdfYWxsb2NhdG9yPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+LCBib29zdDo6Y29udGFpbmVyOjp0cmVlX29wdDwoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4gPj4gPSB7CiAgICAgICAgPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6Om5vZGVfYWxsb2NfaG9sZGVyPGJvb3N0Ojpjb250YWluZXI6Om5ld19hbGxvY2F0b3I8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+ID4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9pbXBsPGJvb3N0OjppbnRydXNpdmU6OmJodHJhaXRzPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4sIGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjpzZWxlY3Qxc3Q8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+ID4gPiA+LCB1bnNpZ25lZCBsb25nLCB0cnVlLCB2b2lkPiA+PiA9IHsKICAgICAgICAgIG1lbWJlcnNfID0gewogICAgICAgICAgICA8Ym9vc3Q6OmNvbnRhaW5lcjo6bmV3X2FsbG9jYXRvcjxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+ID4+ID0gezxObyBkYXRhIGZpZWxkcz59LCAKICAgICAgICAgICAgbWVtYmVycyBvZiBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjpub2RlX2FsbG9jX2hvbGRlcjxib29zdDo6Y29udGFpbmVyOjpuZXdfYWxsb2NhdG9yPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfaW1wbDxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCBib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV92YWx1ZV9jb21wYXJlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+ID4gPiwgdW5zaWduZWQgbG9uZywgdHJ1ZSwgdm9pZD4gPjo6bWVtYmVyc19ob2xkZXI6IAogICAgICAgICAgICBtX2ljb250ID0gewogICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpic3RyZWVfaW1wbDxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCBib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV92YWx1ZV9jb21wYXJlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+ID4gPiwgdW5zaWduZWQgbG9uZywgdHJ1ZSwgKGJvb3N0OjppbnRydXNpdmU6OmFsZ29fdHlwZXMpNSwgdm9pZD4+ID0gewogICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmJzdGJhc2U8Ym9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmludHJ1c2l2ZTo6cmJ0cmVlX25vZGVfdHJhaXRzPHZvaWQqLCB0cnVlPiwgKGJvb3N0OjppbnRydXNpdmU6OmxpbmtfbW9kZV90eXBlKTAsIGJvb3N0OjppbnRydXNpdmU6OmRmdF90YWcsIDN1PiwgYm9vc3Q6OmNvbnRhaW5lcjo6dmFsdWVfdG9fbm9kZV9jb21wYXJlPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfdmFsdWVfY29tcGFyZTxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+LCBzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4gPiA+ID4sIHRydWUsIHVuc2lnbmVkIGxvbmcsIChib29zdDo6aW50cnVzaXZlOjphbGdvX3R5cGVzKTUsIHZvaWQ+PiA9IHsKICAgICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmJzdGJhc2VfaGFjazxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCBib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV92YWx1ZV9jb21wYXJlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+ID4gPiwgdHJ1ZSwgdW5zaWduZWQgbG9uZywgKGJvb3N0OjppbnRydXNpdmU6OmFsZ29fdHlwZXMpNSwgdm9pZD4+ID0gewogICAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnNpemVfaG9sZGVyPHRydWUsIHVuc2lnbmVkIGxvbmcsIHZvaWQ+PiA9IHsKICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGFudF90aW1lX3NpemUgPSA8b3B0aW1pemVkIG91dD4sIAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV8gPSAwCiAgICAgICAgICAgICAgICAgICAgfSwgCiAgICAgICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmJzdGJhc2UyPGJvb3N0OjppbnRydXNpdmU6OmJodHJhaXRzPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4sIGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjpzZWxlY3Qxc3Q8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+ID4gPiA+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6YWxnb190eXBlcyk1LCB2b2lkPj4gPSB7CiAgICAgICAgICAgICAgICAgICAgICA8Ym9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjplYm9fZnVuY3Rvcl9ob2xkZXI8Ym9vc3Q6OmNvbnRhaW5lcjo6dmFsdWVfdG9fbm9kZV9jb21wYXJlPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfdmFsdWVfY29tcGFyZTxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+LCBzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4gPiA+ID4gPj4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmVib19mdW5jdG9yX2hvbGRlcl9pbXBsPGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjpzZWxlY3Qxc3Q8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+ID4gPiA+LCBmYWxzZT4+ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgIDxib29zdDo6Y29udGFpbmVyOjp2YWx1ZV90b19ub2RlX2NvbXBhcmU8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV92YWx1ZV9jb21wYXJlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+ID4gPj4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV92YWx1ZV9jb21wYXJlPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgc3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgYm9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6c2VsZWN0MXN0PHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiA+ID4+ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RkOjpsZXNzPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPj4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4sIGJvb2w+PiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCAKICAgICAgICAgICAgICAgICAgICAgIDxib29zdDo6aW50cnVzaXZlOjpic3RiYXNlMzxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6YWxnb190eXBlcyk1LCB2b2lkPj4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBzYWZlbW9kZV9vcl9hdXRvdW5saW5rID0gPG9wdGltaXplZCBvdXQ+LCAKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIHN0YXRlZnVsX3ZhbHVlX3RyYWl0cyA9IDxvcHRpbWl6ZWQgb3V0PiwgCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBoYXNfY29udGFpbmVyX2Zyb21faXRlcmF0b3IgPSA8b3B0aW1pemVkIG91dD4sIAogICAgICAgICAgICAgICAgICAgICAgICBob2xkZXIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmJodHJhaXRzPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4+ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJvb3N0OjppbnRydXNpdmU6OmJodHJhaXRzX2Jhc2U8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmludHJ1c2l2ZTo6Y29tcGFjdF9yYnRyZWVfbm9kZTx2b2lkKj4qLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4+ID0gezxObyBkYXRhIGZpZWxkcz59LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlcnMgb2YgYm9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmludHJ1c2l2ZTo6cmJ0cmVlX25vZGVfdHJhaXRzPHZvaWQqLCB0cnVlPiwgKGJvb3N0OjppbnRydXNpdmU6OmxpbmtfbW9kZV90eXBlKTAsIGJvb3N0OjppbnRydXNpdmU6OmRmdF90YWcsIDN1PjogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMgbGlua19tb2RlID0gPG9wdGltaXplZCBvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVycyBvZiBib29zdDo6aW50cnVzaXZlOjpic3RiYXNlMzxib29zdDo6aW50cnVzaXZlOjpiaHRyYWl0czxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6aW50cnVzaXZlOjpyYnRyZWVfbm9kZV90cmFpdHM8dm9pZCosIHRydWU+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6bGlua19tb2RlX3R5cGUpMCwgYm9vc3Q6OmludHJ1c2l2ZTo6ZGZ0X3RhZywgM3U+LCAoYm9vc3Q6OmludHJ1c2l2ZTo6YWxnb190eXBlcyk1LCB2b2lkPjo6aG9sZGVyX3Q6IAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Ym9vc3Q6OmludHJ1c2l2ZTo6Y29tcGFjdF9yYnRyZWVfbm9kZTx2b2lkKj4+ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfID0gMHgwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdF8gPSAweDdmZmZmMDAwMGI3OCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0XyA9IDB4N2ZmZmYwMDAwYjc4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA8Tm8gZGF0YSBmaWVsZHM+fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCAKICAgICAgICAgICAgICAgIG1lbWJlcnMgb2YgYm9vc3Q6OmludHJ1c2l2ZTo6YnN0cmVlX2ltcGw8Ym9vc3Q6OmludHJ1c2l2ZTo6Ymh0cmFpdHM8Ym9vc3Q6OmNvbnRhaW5lcjo6Y29udGFpbmVyX2RldGFpbDo6dHJlZV9ub2RlPHN0ZDo6cGFpcjxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0LCB1bnNpZ25lZCBsb25nPiwgdm9pZCosIChib29zdDo6Y29udGFpbmVyOjp0cmVlX3R5cGVfZW51bSkwLCB0cnVlPiwgYm9vc3Q6OmludHJ1c2l2ZTo6cmJ0cmVlX25vZGVfdHJhaXRzPHZvaWQqLCB0cnVlPiwgKGJvb3N0OjppbnRydXNpdmU6OmxpbmtfbW9kZV90eXBlKTAsIGJvb3N0OjppbnRydXNpdmU6OmRmdF90YWcsIDN1PiwgYm9vc3Q6OmNvbnRhaW5lcjo6dmFsdWVfdG9fbm9kZV9jb21wYXJlPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfdmFsdWVfY29tcGFyZTxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+LCBzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHN0ZDo6bGVzczxzdGQ6Ol9fY3h4MTE6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4sIGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnNlbGVjdDFzdDxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4gPiA+ID4sIHVuc2lnbmVkIGxvbmcsIHRydWUsIChib29zdDo6aW50cnVzaXZlOjphbGdvX3R5cGVzKTUsIHZvaWQ+OiAKICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGFudF90aW1lX3NpemUgPSB0cnVlLCAKICAgICAgICAgICAgICAgIHN0YXRpYyBzdGF0ZWZ1bF92YWx1ZV90cmFpdHMgPSA8b3B0aW1pemVkIG91dD4sIAogICAgICAgICAgICAgICAgc3RhdGljIHNhZmVtb2RlX29yX2F1dG91bmxpbmsgPSA8b3B0aW1pemVkIG91dD4KICAgICAgICAgICAgICB9LCAKICAgICAgICAgICAgICBtZW1iZXJzIG9mIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9pbXBsPGJvb3N0OjppbnRydXNpdmU6OmJodHJhaXRzPGJvb3N0Ojpjb250YWluZXI6OmNvbnRhaW5lcl9kZXRhaWw6OnRyZWVfbm9kZTxzdGQ6OnBhaXI8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCwgdW5zaWduZWQgbG9uZz4sIHZvaWQqLCAoYm9vc3Q6OmNvbnRhaW5lcjo6dHJlZV90eXBlX2VudW0pMCwgdHJ1ZT4sIGJvb3N0OjppbnRydXNpdmU6OnJidHJlZV9ub2RlX3RyYWl0czx2b2lkKiwgdHJ1ZT4sIChib29zdDo6aW50cnVzaXZlOjpsaW5rX21vZGVfdHlwZSkwLCBib29zdDo6aW50cnVzaXZlOjpkZnRfdGFnLCAzdT4sIGJvb3N0Ojpjb250YWluZXI6OnZhbHVlX3RvX25vZGVfY29tcGFyZTxib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX25vZGU8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCB2b2lkKiwgKGJvb3N0Ojpjb250YWluZXI6OnRyZWVfdHlwZV9lbnVtKTAsIHRydWU+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjp0cmVlX3ZhbHVlX2NvbXBhcmU8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiwgc3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+LCBzdGQ6Omxlc3M8c3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBib29zdDo6Y29udGFpbmVyOjpjb250YWluZXJfZGV0YWlsOjpzZWxlY3Qxc3Q8c3RkOjpwYWlyPHN0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QsIHVuc2lnbmVkIGxvbmc+ID4gPiA+LCB1bnNpZ25lZCBsb25nLCB0cnVlLCB2b2lkPjogCiAgICAgICAgICAgICAgc3RhdGljIGNvbnN0YW50X3RpbWVfc2l6ZSA9IHRydWUKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sIDxObyBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fQogIH0KfQpmaWxlb3B0ID0gewogIDxib29zdDo6b3B0aW9uYWxfZGV0YWlsOjpvcHRpb25hbF9iYXNlPHN0ZDo6cGFpcjxkaXJlY3RvcnkmLCB1bnNpZ25lZCBsb25nPiA+PiA9IHsKICAgIDxib29zdDo6b3B0aW9uYWxfZGV0YWlsOjpvcHRpb25hbF90YWc+ID0gezxObyBkYXRhIGZpZWxkcz59LCAKICAgIG1lbWJlcnMgb2YgYm9vc3Q6Om9wdGlvbmFsX2RldGFpbDo6b3B0aW9uYWxfYmFzZTxzdGQ6OnBhaXI8ZGlyZWN0b3J5JiwgdW5zaWduZWQgbG9uZz4gPjogCiAgICBtX2luaXRpYWxpemVkID0gZmFsc2UsIAogICAgbV9zdG9yYWdlID0gewogICAgICBkdW1teV8gPSB7CiAgICAgICAgZGF0YSA9ICJcMjU0d1wyNzJcMzY3XDM3N1wxNzdcMDAwXDAwMFwzMDBcMjQwYlwwMDBcMDAwXDAwMFwwMDAiLCAKICAgICAgICBhbGlnbmVyXyA9IHs8Tm8gZGF0YSBmaWVsZHM+fQogICAgICB9CiAgICB9CiAgfSwgPE5vIGRhdGEgZmllbGRzPn0K